2014-07-02 29 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方法)。無論如何,很高興我能幫上忙! –

相關問題