Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: maks991 от Август 11, 2011, 03:36



Название: Как убрать фон у виджета без родителя?
Отправлено: maks991 от Август 11, 2011, 03:36
Создаю виджет, у него нет родителя. Мне так нужно. Я делаю что-то вроде своего тултипа, поэтому он должен быть поверх всего, то бишь виджету при консруировании ставлю флаг Qt::ToolTip. Так вот, значит виджет не имеет родителя. А поэтому у него всегда отрисовывается фон, и только потом то, что находится в пэйнтЭвэнте. Если виджет имеет родителя, то фон по-умолчанию не рисуется. Подскажите, пожалуйста, как избавиться от фона в виджете без родителя?

P.S. setAutoFillBackground(false) не помогает.


Название: Re: Как убрать фон у виджета без родителя?
Отправлено: LisandreL от Август 11, 2011, 07:40
setAttribute(Qt::WA_TranslucentBackground); ?


Название: Re: Как убрать фон у виджета без родителя?
Отправлено: maks991 от Август 11, 2011, 07:58
Теперь фон чёрный, а не белый.. Но он по-прежнему есть :(


Название: Re: Как убрать фон у виджета без родителя?
Отправлено: Гурман от Август 11, 2011, 13:48
http://doc.qt.nokia.com/qq/QtQuarterly29.pdf статья Translucent Widgets in Qt


Название: Re: Как убрать фон у виджета без родителя?
Отправлено: maks991 от Август 11, 2011, 15:28
Большое спасибо! Я создавал виджет только с флагом Qt::ToolTipи и вызов метода setAttribute(Qt::WA_TranslucentBackground) не давал результата. И хотя флаг тултипа убирает все рамки, всё равно нужно было ещё присобачить флаг Qt::FramelessWindowHint и тогда фон исчез :) Так что, кому интересно, если хотите сделать окошко без фона, всегда поверх других и чтобы оно не отображалось в панели задач используйте код:
Код:
QWidget(0, Qt::FramelessWindowHint | Qt::ToolTip);
QWidget::setAttribute(Qt::WA_TranslucentBackground);