Название: [qt-4.2.0 Linux] Не рисует прозрачное окно Отправлено: izoomer от Октябрь 04, 2007, 11:10 Есть JExplorer созданый от QDialog, хотел сделать прозрачным диалог так :
Код: void JExplorer::paintEvent(QPaintEvent * /* event */){ а не рисуется прозрачный rect ... отчего вдруг ? аналогичный код для класа от QWidget работает Название: Re: [qt-4.2.0 Linux] Не рисует прозрачное окно Отправлено: Dendy от Октябрь 04, 2007, 13:28 Забыли указать прозрачность?
Код: p.setBrush( QColor( 37, 86, 145, ??? ) ); Или что вы подразумеваете под прозрачным окном? Название: Re: [qt-4.2.0 Linux] Не рисует прозрачное окно Отправлено: Racheengel от Октябрь 04, 2007, 14:36 Кстати, да, тоже замечал такой баг под линуксом.
К примеру после QPainter p(this); p.setOpacity(0.5); под виндой дальнейшая отрисовка будет полупрозрачной, под линуксом - нет. Название: Re: [qt-4.2.0 Linux] Не рисует прозрачное окно Отправлено: izoomer от Октябрь 05, 2007, 12:58 Забыли указать прозрачность? Код: p.setBrush( QColor( 37, 86, 145, ??? ) ); Или что вы подразумеваете под прозрачным окном? нет, не в этом месте ... Код: void JExplorer::paintEvent(QPaintEvent * /* event */){ вот этот код рисует прозрачный фон для окна (на все окно) , а затем на этом прозрачном фоне рисуется все остальное ... однако этот вот самый фон не рисуется прозрачным. Название: Re: [qt-4.2.0 Linux] Не рисует прозрачное окно Отправлено: Dodge от Октябрь 05, 2007, 13:13 На скока я понимаю, паинтер не ресует само окно... он рисует поверх него, и как следствие нарисовать на окне прозрачную область не означает сделать прозрачным само окно.
Название: Re: [qt-4.2.0 Linux] Не рисует прозрачное окно Отправлено: izoomer от Октябрь 05, 2007, 13:27 На скока я понимаю, паинтер не ресует само окно... он рисует поверх него, и как следствие нарисовать на окне прозрачную область не означает сделать прозрачным само окно. painter рисует само окно , и в paintEvent рисуем все что захотим, то есть как будет выглядеть окно ... вот и для QWidget если нарисовать прозрачный QRect на все пространство ( QWidget::rect() ) то получим QWidget с заданной прозрачностью . Но у меня почему то для одного QWidget работает , а для QDialog не хочет ... странно.Название: Re: [qt-4.2.0 Linux] Не рисует прозрачное окно Отправлено: yshurik от Октябрь 06, 2007, 00:15 Не будет работать так как нужна поддержка оконной системы.
Вы можете рисовать любые полупрозрачные видгеты поверх основного окна которое не будет полупрозрачным через paintEvent. В данном случае QMainWindow не будет полупрозрачным и QDialog тоже (это разные окна оконной системы) Поверх них - пожалуйста (когда они parent для ваших widgets) Название: Re: [qt-4.2.0 Linux] Не рисует прозрачное окно Отправлено: SLiDER от Октябрь 06, 2007, 01:02 Что-то мне подсказывает, что в Linux чтобы получить прозрачное окно вам как минимум еще нужно иметь композитный менеджер окон (compiz? beryl?). Тут как-то пробегала ссылка на блог Zack Rusin, и у него там был примерчик на эту тему, кажется с птичкой в качестве главной формы. Вот вам прямой линк http://zrusin.blogspot.com/2006_10_01_archive.html, статейка называется "ARGB windows". Удачи.
Название: Re: [qt-4.2.0 Linux] Не рисует прозрачное окно Отправлено: Dodge от Октябрь 08, 2007, 10:47 painter рисует само окно , и в paintEvent рисуем все что захотим, то есть как будет выглядеть окно ... вот и для QWidget если нарисовать прозрачный QRect на все пространство ( QWidget::rect() ) то получим QWidget с заданной прозрачностью . Но у меня почему то для одного QWidget работает , а для QDialog не хочет ... странно. Вот просто слов нету, кроме как - аффтар убей себя ап стену...ПАИНТЕР НЕ РИСУЕТ ОКНО!!! Окно рисует оконная система, и если нарисовать прозрачную область на окне(При помощи паинтера), это не даст эффект прозрачности для самого окна, это дасть эффект прозрачности для уже нарисованных элементов на окне! З.Ы. если у аффтора есть код, который с использованием QPainter'а делает окно прозрачным, то предлагаю объявить данного оратора мегашаманом программирования, выдать имменной бубен и послать работать в мелкосовт, там такие нужны. |