Details
-
Bug
-
Resolution: Unresolved
-
P2: Important
-
None
-
5.15.2, 6.7, 6.x
-
None
Description
Dynamically creating a Menu and inserting it into a MenuBar appears to be fundamentally broken. Doing so results in the position of the Menu (and indeed the ordering of the MenuBar as a whole) being somewhat random.
Here is a simple test case:
import QtQuick 2.15 import QtQuick.Window 2.15 import QtQuick.Controls 2.15 ApplicationWindow { id: mainWindow width: 640 height: 480 visible: true title: qsTr("Hello World") menuBar: MenuBar { id: mainMenuBar Menu { title: "Static 1" } Menu { title: "Static 2" } } Component { id: menuComponent; Menu {} } Button { anchors.centerIn: parent text: "Insert Menu At Start" onClicked: { mainMenuBar.insertMenu(0, menuComponent.createObject(mainMenuBar, {"title": "First"})); } } }
If I click the button 4 times, I get the order seen in the attached screenshot; Static 2 First First Static 1 First First. I would expect to see First First First First Static 1 Static 2.
Furthermore, I see the following in the application output:
QQuickItem::stackBefore: Cannot stack MenuBarItem_QMLTYPE_1(0x55555569df20, parent=0x555555820730, geometry=104.797,0 62.4844x29) before MenuBarItem_QMLTYPE_1(0x55555569df20), which must be a sibling QQuickItem::stackBefore: Cannot stack MenuBarItem_QMLTYPE_1(0x555555b027c0, parent=0x555555820730, geometry=104.797,0 62.4844x29) before MenuBarItem_QMLTYPE_1(0x555555b027c0), which must be a sibling QQuickItem::stackBefore: Cannot stack MenuBarItem_QMLTYPE_1(0x5555558b2c20, parent=0x555555820730, geometry=124.969,0 42.3125x29) before MenuBarItem_QMLTYPE_1(0x5555558b2c20), which must be a sibling