QAction keyBindings

时间:2016-04-27 14:45:14

标签: qt pyqt

在Windows上,标准操作有几个键绑定。例如,要复制,可以使用 Ctrl + C Ctrl + Insert

如何用Qt处理?这就是我所做的:

  1. 我使用QKeySequence.keyBindings()获得键绑定列表
  2. 我创建了 2个操作,一个用于 Ctrl + C ,另一个用于 Ctrl + Insert
  3. 似乎有效。

    问题:这是用Qt处理键绑定的正确方法吗?

    完整源代码:

    from sys import argv, exit
    from PyQt4.QtGui import QApplication, QWidget, QAction, QKeySequence
    
    
    class Widget(QWidget):
        def __init__(self):
            QWidget.__init__(self)
            for key in QKeySequence.keyBindings(QKeySequence.Copy):
                action = QAction("Copy", self)
                action.triggered.connect(self._copy)
                action.setShortcut(key)
                self.addAction(action)
    
        def _copy(self):
            print("Copy!")
    
    print("On Windows, use Ctrl+C or Ctrl+Insert to copy.")
    app = QApplication(argv)
    w = Widget()
    w.show()
    exit(app.exec_())
    

1 个答案:

答案 0 :(得分:3)

您只需要一个操作并拨打QAction::setShortcuts()

action = QAction("Copy", self)
action.setShortcuts(QKeySequence.keyBindings(QKeySequence.Copy))
action.triggered.connect(self._copy)