4

我正在尝试使用非常模块化的命令方法开发一个应用程序,并认为它会很好,我正在使用 pyqt,使用 QAction 将快捷方式绑定到命令。
但是,似乎只有当操作在菜单或工具栏中可见时,操作快捷方式才有效。有谁知道在不可见的情况下让这个动作起作用的方法?
下面的一些示例代码显示了我正在尝试的内容。
谢谢,

安德烈

from PyQt4 import *
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys

class TesteMW(QMainWindow):
    def __init__(self, *args):
        QMainWindow.__init__(self, *args)
        self.create_action()

    def create_action(self):
        self.na = QAction(self)
        self.na.setText('Teste')
        self.na.setShortcut('Ctrl+W')
        self.connect(self.na, SIGNAL('triggered()'), self.action_callback)
        # uncomment the next line for the action to work
        # self.menuBar().addMenu("Teste").addAction(self.na)

    def action_callback(self):
        print 'action called!'


app = QApplication(sys.argv)
mw = TesteMW()
mw.show()

app.exec_()
4

1 回答 1

7

在处理它之前,您需要将您的操作添加到小部件。来自 QAction 的 QT 文档:

使用 QWidget::addAction() 或 QGraphicsWidget::addAction() 将操作添加到小部件。请注意,必须先将操作添加到小部件才能使用它;当快捷方式应该是全局的(即,Qt::ApplicationShortcut 为 Qt::ShortcutContext)时也是如此。

这并不意味着它们将作为菜单项或其他内容可见 - 只是它们将作为小部件事件循环的一部分进行处理。

于 2009-08-28T13:49:27.593 回答