How to set multiple flags in QMainWindow?

From here: 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"; 

But when I do this:

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

The first flag is overwritten. How can I set multiple flags at the same time?

+4
source share
2 answers
 window->setWindowFlags (Qt::WindowStaysOnTopHint | Qt::WindowMinimizeButtonHint ); 

For information:

Window flags are stored as OR flag combinations inside an object of type QFlags<WindowType> , where WindowType is an enumeration.

When storing flags, you combine your values ​​with the bitwise OR operator.

See the Qt Documentation for more information.

+11
source

Try:

 Qt :: WindowFlags flags = 0; flags = flags | Qt :: WindowStaysOnTopHint; flags = flags | Qt :: WindowMinimizeButtonHint; window->setWindowFlags (flags); 
+2
source

Source: https://habr.com/ru/post/1396593/


All Articles