Как установить несколько флагов в QMainWindow? - PullRequest
4 голосов
/ 15 февраля 2012

Отсюда: http://doc.qt.io/qt-4.8/qt-widgets-windowflags-example.html

 if (flags & Qt::MSWindowsFixedSizeDialogHint)
     text += "\n| Qt::MSWindowsFixedSizeDialogHint";
 if (flags & Qt::X11BypassWindowManagerHint)
     text += "\n| Qt::X11BypassWindowManagerHint";
 if (flags & Qt::FramelessWindowHint)
     text += "\n| Qt::FramelessWindowHint";
 if (flags & Qt::WindowTitleHint)
     text += "\n| Qt::WindowTitleHint";
 if (flags & Qt::WindowSystemMenuHint)
     text += "\n| Qt::WindowSystemMenuHint";
 if (flags & Qt::WindowMinimizeButtonHint)
     text += "\n| Qt::WindowMinimizeButtonHint";
 if (flags & Qt::WindowMaximizeButtonHint)
     text += "\n| Qt::WindowMaximizeButtonHint";
 if (flags & Qt::WindowCloseButtonHint)
     text += "\n| Qt::WindowCloseButtonHint";
 if (flags & Qt::WindowContextHelpButtonHint)
     text += "\n| Qt::WindowContextHelpButtonHint";
 if (flags & Qt::WindowShadeButtonHint)
     text += "\n| Qt::WindowShadeButtonHint";
 if (flags & Qt::WindowStaysOnTopHint)
     text += "\n| Qt::WindowStaysOnTopHint";
 if (flags & Qt::CustomizeWindowHint)
     text += "\n| Qt::CustomizeWindowHint";

Но когда я делаю это:

Qt :: WindowFlags flags = 0;

flags = flags | Qt :: WindowStaysOnTopHint;
flags = flags & Qt :: WindowMinimizeButtonHint;
window->setWindowFlags (flags);

Первый флаг перезаписывается. Как установить несколько флагов одновременно?

Ответы [ 2 ]

12 голосов
/ 15 февраля 2012
window->setWindowFlags (Qt::WindowStaysOnTopHint | Qt::WindowMinimizeButtonHint );

Для вашей информации:

Флаги окна хранятся в виде ИЛИ комбинаций флагов внутри объекта типа QFlags<WindowType>, где WindowType является перечислением.

При хранении флагов вы объединяете их значения с помощью побитового оператора ИЛИ .

Для получения дополнительной информации см. Документацию Qt .

2 голосов
/ 15 февраля 2012

Попробуйте с:

Qt :: WindowFlags flags = 0;

flags = flags | Qt :: WindowStaysOnTopHint;
flags = flags | Qt :: WindowMinimizeButtonHint;
window->setWindowFlags (flags);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...