PySide2 MenuItem中的快捷方式阻止显示窗口

时间:2018-11-13 15:22:31

标签: python qml qtquick2 shortcut pyside2

我正在尝试使用PySide2(适用于Windows的Qt)和QML创建一个非常简单的ApplicationWindow。

main.py

import sys
from PySide2.QtWidgets import QApplication
from PySide2.QtCore import QUrl
from PySide2.QtQml import QQmlApplicationEngine

if __name__ == "__main__":
    app = QApplication(sys.argv)
    url = QUrl("mainWindow.qml")
    engine = QQmlApplicationEngine()
    engine.load(url)
    sys.exit(app.exec_())

qml文件

import QtQuick.Controls 2.4

ApplicationWindow {
    id: mainWindow
    visible: true
    title: "MainWindow"
    width: 640
    height: 480

    menuBar: MenuBar {
        id: menuBar

        Menu {
            id: editMenu
            title: "&Edit"

            MenuItem {
                id: copyItem
                text: "Copy"
                // This doesn't work:
                // shortcut: "Ctrl+C"
                // This doesn't work either:
                // shortcut: StandardKey.Copy
            }
        }
    }
}

如图所示,代码运行并显示带有MenuBar和Menu的ApplicationWindow。但是,如果我不推荐这两个快捷方式中的任何一个,则根本不会显示该窗口。我不明白,为什么。我的示例遵循Qt documentation on MenuItems

1 个答案:

答案 0 :(得分:1)

在QML中,有两种类型的项目:Qt Quick Controls 1Qt Quick Controls 2。两组都具有相同的名称,但是它们的属性不同,在您的情况下,MenuItem的{​​{1}}没有快捷方式属性,但是如果有Qt Quick Controls 2则具有快捷方式属性,因此解决方案是更改导入:

Qt Quick Controls 1