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

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

Форум на CrossPlatform.RU _ Qt GUI _ Как сделать диалоговую форму поверх всех окон в Виндосе

Автор: sibmail 9.4.2009, 9:44

Как сделать диалоговую форму поверх всех окон в Виндосе

Цитата(sibmail @ 9.4.2009, 9:32) *
Как сделать диалоговую форму поверх всех окон в Виндосе


Все! Сделал! Qt::WindowStaysOnTopHint

Client_Dialog :: Client_Dialog (QWidget *parent) : QDialog(parent,Qt::WindowStaysOnTopHint)
....

Автор: KFX 20.5.2010, 21:36

Цитата(sibmail @ 9.4.2009, 9:44) *
Как сделать диалоговую форму поверх всех окон в Виндосе

Цитата(sibmail @ 9.4.2009, 9:32) *
Как сделать диалоговую форму поверх всех окон в Виндосе


Все! Сделал! Qt::WindowStaysOnTopHint

Client_Dialog :: Client_Dialog (QWidget *parent) : QDialog(parent,Qt::WindowStaysOnTopHint)
....


А как во время работы программы изменить этот флаг? например по нажатию на кнопку. Проблема в том, что если назначить этот флаг в setWindoWFlag, то окно пропадает и надо сделать show(); что не выглядит красиво особенно для полноэкранных приложений (видно, как окно скрывается и показывается). Можно как-то обойти это?

Автор: Litkevich Yuriy 21.5.2010, 4:44

надо учитывать и другие флажки, примерно так:

widget->setWindowState(widget->windowState() ^ Qt::WindowStaysOnTopHint)

здесь операция "исключающего ИЛИ" инвертирует состояние флага Qt::WindowStaysOnTopHint, а остальные флажки остаются неизменными.

Автор: Алексей1153 3.9.2010, 7:57

да, с утреца нашёл как сделать поверх ) Видать, я уже сильно засыпАл вчера

у меня это теперь выглядит так

//без фрейма + всегда наверху + без кнопки на тулбаре
setWindowFlags(windowType()|Qt::FramelessWindowHint|Qt::WindowStaysOnTopHint|Qt::Tool);




упс, не туда запостил ) Ну да ладно, пусть тут валяется

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)