Версия для печати темы
Форум на CrossPlatform.RU _ Qt GUI _ рисование на прозрачном виджете
Автор: Алексей1153 2.9.2010, 21:12
Как сделать такую вещь: виджет должен быть прозрачным, но то, что я дополнительно рисую в paintEvent (примитивы, буквы, битмапы) должны отображаться
Нашёл только полупрозрачность виджета, но это применяется также и к остальной графике в целом (
Автор: igor_bogomolov 2.9.2010, 21:36
Посмотри этот пример http://www.qtcentre.org/wiki/index.php?title=Widget_Overlay
Автор: QCasper 2.9.2010, 22:10
setWindowFlags(Qt::FramelessWindowHint);
setAttribute(Qt::WA_TranslucentBackground);
http://www.youtube.com/watch?v=H_-IWn42WEU - здесь пример работы (с 30-й секунды заметнее).
Автор: Алексей1153 2.9.2010, 22:30
Цитата(igor_bogomolov @ 3.9.2010, 0:36)

Посмотри этот пример http://www.qtcentre.org/wiki/index.php?title=Widget_Overlay
нет, это не то. вызов
setWindowOpacity(0.3);
показывает, что линии тоже полупрозрачные стали
QCasper, О да! Самое оно, спасибо )) Щас ещё найду, как из панели задач кнопку убрать - и вообще красота

Офигеть, при выводе *.png прозрачные пикселы автоматически не реагируют на мышь ) Круть да и только
Автор: Алексей1153 3.9.2010, 0:51
Цитата(Алексей1153 @ 3.9.2010, 1:30)

Щас ещё найду, как из панели задач кнопку убрать
блин, а так и не понял, как это сделать ...
А ещё - как сделать всегда поверх всех окон?
Автор: Litkevich Yuriy 3.9.2010, 7:07
Цитата(Алексей1153 @ 3.9.2010, 4:51)

А ещё - как сделать всегда поверх всех окон?
поищи по форуму. Если не найдёшь - создай отдельную тему.
Автор: Sokoloff 3.9.2010, 16:24
http://doc.crossplatform.ru/qt/4.6.x/qwidget.html#transparency-and-double-buffering читали?
Автор: Алексей1153 3.9.2010, 19:37
Sokoloff,
ЭТО мы читаем регулярно. Нажимая F1. Только когда 4 часа утра, а надо срочно сделать - там фиг что отроешь. А ответ я нашёл на этом форуме, в той теме и запостил
http://www.forum.crossplatform.ru/index.php?showtopic=2552
Автор: Sokoloff 3.9.2010, 21:03
Цитата(Алексей1153 @ 3.9.2010, 20:37)

Sokoloff,

ЭТО мы читаем регулярно. Нажимая F1. Только когда 4 часа утра, а надо срочно сделать - там фиг что отроешь. А ответ я нашёл на этом форуме, в той теме и запостил
Брр... Ничего не понял в какой "той теме" и куда запостил?
Все, догнал, 10 вечера а я работе, тоже не сахар.
Автор: Алексей1153 3.9.2010, 21:50
Автор: Litkevich Yuriy 3.9.2010, 21:55
Цитата(Sokoloff @ 4.9.2010, 1:03)

в какой "той теме" и куда запостил?
чтобы всем было понятно: http://www.forum.crossplatform.ru/index.php?showtopic=2552
Автор: xls 6.9.2010, 9:32
Цитата(Алексей1153 @ 2.9.2010, 21:12)

Как сделать такую вещь: виджет должен быть прозрачным, но то, что я дополнительно рисую в paintEvent (примитивы, буквы, битмапы) должны отображаться
Нашёл только полупрозрачность виджета, но это применяется также и к остальной графике в целом (
В случае, когда логика работы проектируемого виджета проста, приведенный подход себя оправдывает. В более сложных случаях, когда, например, нужно будет вывести таблицу и сохранить возможность нетривиального взаимодействия с ней для пользователя, "прозрачность" текста в форме сыграет плохую шутку: для того, чтобы сделать активным строку нужно будет "попадать" мышью точно в текст, т.к. остальное содержимое будет прозрачным.
Автор: Алексей1153 6.9.2010, 10:10
xls, это анимированный персонаж на рабочем столе - на нём таблиц не предполагается
Когда таблица - там уж понятно, что прозначность нафиг не нужна. Не нужно путать интерфейс с мультиком.
Автор: xls 6.9.2010, 10:22
Цитата(Алексей1153 @ 6.9.2010, 10:10)

xls, это анимированный персонаж на рабочем столе - на нём таблиц не предполагается

Когда таблица - там уж понятно, что прозначность нафиг не нужна. Не нужно путать интерфейс с мультиком.
Обычно это, действительно, не нужно. Но "случаи разные бывают" и в том числе с прозрачными таблицами. У меня как раз это и произошло. Если кто-то будет искать инфу по данной теме, это ему поможет.
Автор: Алексей1153 6.9.2010, 11:17
Не могу придумать такой случай
Скорее всего - ошибка в проектировании
Автор: Sokoloff 6.9.2010, 12:34
Цитата(Алексей1153 @ 6.9.2010, 12:17)

Не могу придумать такой случай

Скорее всего - ошибка в проектировании
Я бы не был так категоричен, ситуации разные бывают. Ну вот например ситуация, когда может понадобиться прозрачная таблица. Плеер с поддержкой "скинов", всякие рамочки, кнопочки, и фон под таблицей рисует движок скинов, а поверх надо вывести прозрачную таблицу - плей-лист.
Автор: Алексей1153 6.9.2010, 13:18
Цитата(Sokoloff @ 6.9.2010, 15:34)

Плеер с поддержкой "скинов", всякие рамочки, кнопочки, и фон под таблицей рисует движок скинов, а поверх надо вывести прозрачную таблицу - плей-лист.
тут можно просто нарисовать таблицу сверху. Или нарисовать её на QImage, затем скомбинировать с уже отрисованным фоном так, чтобы белый цвет таблицы не нарисовался, а остальное нарисовалось
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)