在Qt 5.11.2上,我有一个这样的QML项目:
Menu {
MenuItem {
visible: false // Works on Linux, however doesn't work on Windows!!!
enabled: true
text: qsTr("First menu item") + emptyString
onTriggered: doSomething()
}
}
我不知道为什么visible: false
语句在Linux上有效,而在Windows下不。我的意思是,在Linux上,菜单项实际上是不可见的,但是在Windows上,菜单项是可见的,就像visible: false
语句在Windows上被忽略一样。有人可以帮忙吗?
如@teh_raab所建议,我在代码中使用了Component.onCompleted
。令人惊讶的是,qml记录了qml: Visible: false
,但是菜单项在Windows上仍然可见:
MenuItem {
visible: false
Component.onCompleted: {
this.visible = false;
console.log("Visible: ", visible); // logs `qml: Visible: false`
// But menu item is still visible!!!
}
enabled: true
text: qsTr("First menu item") + emptyString
onTriggered: doSomething()
}
问题最终通过以下代码得以解决,该代码非常奇怪:
MenuItem {
visible: true // When this is set `true`, the menu item gets hidden on Windows!!!
Component.onCompleted: {
this.visible = false; // Now this statement actually works!!!
console.log("Visible: ", visible); // logs `qml: Visible: false`
}
enabled: true
text: qsTr("First menu item") + emptyString
onTriggered: doSomething()
}
答案 0 :(得分:1)
我自己还没有看到这个。如果在MenuItem-> Component.onCompleted中将可见性设置为false,是否仍会显示?