我有一个小部件,其中mac快捷方式Command+C可以很好地交互,并且内容正确地存储在剪贴板中。
我正试图在单元测试中实现相同的行为。它可以在其他平台上运行,但不能在Mac上运行。
expected_clipboard = "whatever"
self._widget.show()
Test.processEvents()
QtTest.QTest.keyClick(self._widget, QtCore.Qt.Key_C, QtCore.Qt.ControlModifier)
Test.processEvents()
current_clipboard= QtGui.qApp.clipboard().text()
self.assertEqual(current_clipboard, expected_clipboard) # Fails.
根据Qt文档,ControlModifier是Mac上命令的适当对应实体。我也尝试了MetaModifier只是出于好奇,但它不起作用。
动作正确地附加了以下代码
self._action = QtGui.QAction('text', self)
action.connect(self._action, QtCore.SIGNAL('triggered()'), self.copyAction)
self._action.setShortcut(QtGui.QKeySequence.Copy)
self.addAction(self._action)
Qt 4.8最新版,osx 10.8.
好的,问题是窗口必须是可见的,引发的和激活的,否则OSX不传递事件。只需调用widget.raise_()和widget.activateWindow()