3

QMenu に追加された QAction のショートカット機能を理解できません。例から始めましょう:

from PyQt4 import QtCore, QtGui
import sys

class TestApp(QtGui.QMainWindow):
    def __init__(self, *args):
        super(TestApp, self).__init__(*args)

        #create contex menu
        self.menu = QtGui.QMenu(self)
        self.menu.addAction("testEntry", self.action, "CTRL+T")

        self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        self.customContextMenuRequested.connect(self.execContextMenu)

    def execContextMenu(self, point):
        self.menu.exec_(self.mapToGlobal(point))

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

app = QtGui.QApplication(sys.argv)
win = TestApp()
win.show()

app.exec_()

ユーザーが「Ctrl + T」を押したとき、またはコンテキストメニューが呼び出された後に「Ctrl + T」が押されたときに、action()が呼び出されることを期待します。しかし、ショートカットを押しても何も起こりません。ただし、 QAction をTestAppに追加すると

act = self.menu.addAction("testEntry", self.action, "CTRL+T")
self.addAction(act)

動作します (ただし、コンテキスト メニューが開いているときは動作しません)。それで、私は何を間違っていますか?

OSX 10.6でPyQt4を使用しています

助けてくれてありがとう;)

4

1 に答える 1

1

Mac では、Qt はコントロール キーを Ctrl ではなく Meta にマップします。

于 2014-01-06T22:01:00.570 に答える