QtQuick 弹出菜单无法按预期工作
QtQuick popup menu not working as expected
我正在向我的 QtQuick GUI (as in here I believe) 添加一个弹出菜单,但它的行为与我预期的不同。
这是我的做法:
import QtQuick 2.7
import QtQuick.Layouts 1.3
import QtQuick.Window 2.2
import QtQuick.Controls 2.0
import QtQuick.Controls.Styles 1.2
ApplicationWindow
{
...
// File menu button.
Rectangle
{
id: ribbonFileMenuButton
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
width: height
height: parent.height
scale: ribbonFileMenuButtonMA.pressed ? 1.3 : 1
color: "transparent"
// Icon.
RibbonFileButtonIcon
{
id: ribbonFileMenuButtonIcon
anchors.fill: parent
}
// Behavior.
MouseArea
{
id: ribbonFileMenuButtonMA
anchors.fill: parent
onClicked: menu.open() /*popup()*/
}
}
...
// File.
Menu
{
id: menu
y: 20
MenuItem
{
text: "New..."
}
MenuItem
{
text: "Open..."
}
// MenuSeparator { }
MenuItem
{
text: "Save"
}
}
...
}
首先,我必须调用 menu.open() 而不是 menu.popup()(如所述在上面提供的文档中 link): menu.popup() 输出错误:
类型错误:对象 QQuickMenu(0x20f40f0) 的 属性 'popup' 不是函数
然后如果我取消注释 MenuSeparator { },我会收到以下错误:
MenuSeparator 不是类型
同样,根据提供的文档 link,它应该可以工作。
上网查了一下,有点迷茫...
谢谢,
安托万。
正如@ManuelH 所说,MenuSeparator
在 Qt Quick Controls 2 中不可用...yet。 :)
2.0 版本确实是一个完整的重写,带来了一个新的 API。那里有很多相同的类型,但应密切关注文档以避免依赖 API 或 Qt Quick Controls 1.x.
的行为
允许跨主要版本(例如 QtQuick 1.0 到 QtQuick 2.0、Qt 4 到 Qt 5 等)的源兼容性中断(尽管试图保持在最低限度)。
查看它链接到的 this page for more information about the differences between the two APIs, and the blog post。
我正在向我的 QtQuick GUI (as in here I believe) 添加一个弹出菜单,但它的行为与我预期的不同。
这是我的做法:
import QtQuick 2.7
import QtQuick.Layouts 1.3
import QtQuick.Window 2.2
import QtQuick.Controls 2.0
import QtQuick.Controls.Styles 1.2
ApplicationWindow
{
...
// File menu button.
Rectangle
{
id: ribbonFileMenuButton
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
width: height
height: parent.height
scale: ribbonFileMenuButtonMA.pressed ? 1.3 : 1
color: "transparent"
// Icon.
RibbonFileButtonIcon
{
id: ribbonFileMenuButtonIcon
anchors.fill: parent
}
// Behavior.
MouseArea
{
id: ribbonFileMenuButtonMA
anchors.fill: parent
onClicked: menu.open() /*popup()*/
}
}
...
// File.
Menu
{
id: menu
y: 20
MenuItem
{
text: "New..."
}
MenuItem
{
text: "Open..."
}
// MenuSeparator { }
MenuItem
{
text: "Save"
}
}
...
}
首先,我必须调用 menu.open() 而不是 menu.popup()(如所述在上面提供的文档中 link): menu.popup() 输出错误:
类型错误:对象 QQuickMenu(0x20f40f0) 的 属性 'popup' 不是函数
然后如果我取消注释 MenuSeparator { },我会收到以下错误:
MenuSeparator 不是类型
同样,根据提供的文档 link,它应该可以工作。
上网查了一下,有点迷茫...
谢谢,
安托万。
正如@ManuelH 所说,MenuSeparator
在 Qt Quick Controls 2 中不可用...yet。 :)
2.0 版本确实是一个完整的重写,带来了一个新的 API。那里有很多相同的类型,但应密切关注文档以避免依赖 API 或 Qt Quick Controls 1.x.
的行为允许跨主要版本(例如 QtQuick 1.0 到 QtQuick 2.0、Qt 4 到 Qt 5 等)的源兼容性中断(尽管试图保持在最低限度)。
查看它链接到的 this page for more information about the differences between the two APIs, and the blog post。