Details
-
Bug
-
Resolution: Fixed
-
P1: Critical
-
6.7.0
-
None
-
Windows 11, MinGW-w64, Linux x86_64
-
-
b7874f1fa (dev), bec8a58da (6.7)
Description
There is an issue using style override and QMenuBar on Windows 11.
In my case I used fusion style for QApplication and then windows11 style for menus and submenus.
In dark mode the QMenu are completely white. Applying windows11 style on submenu with weighty menu crashes.
Windows 11, mingw64 cross-compiled bin on Linux, Qt 6.7.0
An example, please note, this example does not crash.
#include <QApplication> #include <QStyle> #include <QStyleFactory> #include <QWidget> #include <QGridLayout> #include <QMenuBar> int main(int argc, char *argv[]) { QApplication *app = new QApplication(argc, argv); // case use override style to fusion { QStyle *style = QStyleFactory::create("fusion"); QApplication::setStyle(style); } QWidget *widget = new QWidget; widget->setWindowTitle("QMenuBar QMenu Win11 test"); widget->setMinimumSize(640, 480); QGridLayout *frm = new QGridLayout(widget); // case use native menu bar QMenuBar *menubar = new QMenuBar(); menubar->setNativeMenuBar(true); #ifdef Q_OS_WIN { QStyle *style = QStyleFactory::create("windows11"); menubar->setStyle(style); } #endif frm->setMenuBar(menubar); // issue broken menu is all white in dark mode QMenu *menu = new QMenu(menubar); menu->setTitle("Menu"); #ifdef Q_OS_WIN { QStyle *style = QStyleFactory::create("windows11"); menu->setStyle(style); } #endif menubar->addMenu(menu); { QAction *action = new QAction(menu); action->setText("Item 1"); menu->addAction(action); } { QAction *action = new QAction(menu); action->setText("Item 2"); menu->addAction(action); } // issue CRASH // note not reproducible with this example QMenu *submenu = new QMenu(menu); submenu->setTitle("Submenu"); #ifdef Q_OS_WIN { QStyle *style = QStyleFactory::create("windows11"); submenu->setStyle(style); } #endif menu->addMenu(submenu); { QAction *action = new QAction(submenu); action->setText("Item 1"); submenu->addAction(action); } { QAction *action = new QAction(submenu); action->setText("Item 2"); submenu->addAction(action); } frm->addWidget(new QWidget()); widget->setLayout(frm); widget->show(); return app->exec(); }
👋
Attachments
For Gerrit Dashboard: QTBUG-124524 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
556616,5 | QWindows11Style: Initialize colorSchemeIndex/highContrastTheme in ctor | dev | qt/qtbase | Status: MERGED | +2 | 0 |
562614,2 | QWindows11Style: Initialize colorSchemeIndex/highContrastTheme in ctor | 6.7 | qt/qtbase | Status: MERGED | +2 | 0 |