【发布时间】:2015-01-03 08:50:28
【问题描述】:
我的问题与此处发现的问题几乎完全相同: Override shouldInterruptJavaScript in QWebPage with PySide
在我的情况下,虽然我想覆盖 QLineEdit 上的复制和粘贴槽
import sys
from PySide import QtGui, QtCore
class myLineEdit(QtGui.QLineEdit):
# FIXME: This is not working, the slot is not overriden!
@QtCore.Slot()
def copy(self):
print 'overridden copy event'
App.clipboard().setText('customized text')
return False
@QtCore.Slot()
def paste(self):
print 'overridden paste event'
self.setText('customized text')
return False
if __name__ == "__main__":
App = QtGui.QApplication(sys.argv)
Widget = myLineEdit()
Widget.show()
cmenu = Widget.createStandardContextMenu()
sys.exit(App.exec_())
我使用 Python 2.7.3 和 PySide 1.2.2
我不知道这些方法是否应该是可覆盖的,但我找不到任何说明它们不应该的文档。
我也找到了这个页面 http://qt-project.org/faq/answer/is_it_possible_to_reimplement_non-virtual_slots
该页面解释了某些类型的插槽如何通过在对象初始化时调用的函数获取指向它们的指针(或者类似的东西,我对 C++ 不太熟悉)。
按照这个逻辑,我在上面添加了 createStandardContextMenu() 调用,希望它至少可以重新初始化上下文菜单的插槽,但没有运气。
我做错了吗?还是我应该尝试提交错误报告?
【问题讨论】:
标签: python qt overriding pyside signals-slots