2014-07-02 28 views
0

我尝试使用下面的一个选项,在QsciScintilla文本编辑窗口添加到自定义右键单击快捷菜单:什么是SLOT()插槽()成员

fileMenu.addAction(self.ui.textEdit_one.tr("&Get"), self, self.addToConfig) 

其中addToConfig是一种方法,或我的应用程序的“插槽”。 fileMenu预计,格式如下:

QAction QMenu.addAction (self, QString text, QObject receiver, SLOT()SLOT() member, QKeySequence shortcut = 0) 

我一直在使用QtCore.SLOT(“self.addToConfig()”)的多种组合尝试,但似乎无法得到正确的格式。

我不断的得到变化:

QMenu.addAction(QString, QObject, SLOT(), QKeySequence shortcut=0): argument 3 has unexpected type 'instancemethod' 

Object::connect: No such slot StartQT4::addToConfig() 
Object::connect: (receiver name: 'EditorWindow') 

回答

1

您试图混合使用新的风格信号/插槽老式信号/插槽。对于旧式连接,您可以将对象(self)作为一个参数传入,而下一个将在您的情况下为SLOT('addToConfig(<arg types...>)')

然而,你应该只使用新型连接,这意味着简单地调用fileMenu.addAction(self.ui.textEdit_one.tr("&Get"), self.addToConfig),请参阅:http://pyqt.sourceforge.net/Docs/PyQt4/qmenu.html#addAction-5

+0

我不认为我正确地理解“接收器”领域。 QAction QMenu.addAction(自我,QString文本,可调用接收器,QKeySequence快捷键= 0)非常感谢你! – Blackdragon1400

+1

是的,在你尝试的原始签名中,它正在寻找一个'QObject'类型的接收者(又名一个对象,而不是一个方法),因为你现在使用的签名期望一个类似'callable'的接收者(又名a方法)。无论如何,很高兴我能帮上忙! –

相关问题