Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на 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)