crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Прозрачнойсть вокруг виджетов необычной формы
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 29.9.2010, 13:29
 
Цитата(edwardoid @ 29.9.2010, 14:07) *
Не совсем, это же меню
дак тебе лучше сделать наследника от QMenu, в нём же уже реализован функционал сокрытия при потери фокуса.
ufna Дата 29.9.2010, 10:17
  Ну я тут сделал именно двумя виджетами. Меню пропадает при клике "куда угодно", то же самое можно сделать и для основного виджета - проще всего делай его потомком QMenu, либо аккуратно обрабатывай соотвествующие события.
edwardoid Дата 29.9.2010, 10:07
 
Цитата(Litkevich Yuriy @ 29.9.2010, 12:00) *
Цитата(edwardoid @ 29.9.2010, 13:31) *
Вот полная структура результата.
Эдвард, я думаю тут прозрачность не нужна. Нужно просто создавать (отображать) прямоугольный виджет поверх, а когда пользователь щёлкает в кружок, то прямоугольный виджет скрывать (close)

Не совсем, это же меню, т.е. если кликнуть рядом с прямоугольником, его опять же надо скрыть Любой клик на белой поверхности, должно скрыть все, что закрашено желто-оранжевым
Litkevich Yuriy Дата 29.9.2010, 10:00
 
Цитата(edwardoid @ 29.9.2010, 13:31) *
Вот полная структура результата.
Эдвард, я думаю тут прозрачность не нужна. Нужно просто создавать (отображать) прямоугольный виджет поверх, а когда пользователь щёлкает в кружок, то прямоугольный виджет скрывать (close)
Алексей1153 Дата 29.9.2010, 9:44
  вот так
Цитата
void QPainter::setClipRegion ( const QRegion & region, Qt::ClipOperation operation = Qt::ReplaceClip )
Sets the clip region to the given region using the specified clip operation. The default clip operation is to replace the current clip region.

Note that the clip region is given in logical coordinates.

See also clipRegion(), setClipRect(), and Clipping.

и хочь там что динамическое :) Правда, сам это под Qt не пробовал (ищу аналогию с WinAPI). Заодно и расскажешь ))

А зачем определять "на какой суб-виджет попал", пусть контролы сами обрабатывают клики
edwardoid Дата 29.9.2010, 9:31
  Не понял. Как понять "подрезать"? У меня динамически удлиняется прямоугольник.


Вот полная структура результата.
Алексей1153 Дата 29.9.2010, 9:24
  Кстати, с регионами таки универсальнее будет - а для фона так же сможешь регионом обрезать PNG потом и подложить
edwardoid Дата 29.9.2010, 9:21
  Он картиночный по любому, там фон важный закрасить или нарисовать не вариант, потому придется картинку ставить..


Пример Каспера пашет, только как убрать виджет, когда кликнули по пустому месту?
Алексей1153 Дата 29.9.2010, 9:19
  в твоём случае PNG как бы и не требуется, разве что хочешь фон нарисовать картиночный
edwardoid Дата 29.9.2010, 9:17
  У меня тоже пнг и виджеты будут там, где закрашено непрозрачной частью пнг
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 18.4.2024, 14:14