2012-10-02 48 views
0

我有兩個類;一個用於我的窗口,一個用於我的控制對象在pyqt4 qobject類中連接pyqt4信號

class window(baseClass, testForm): 
    scanStarted = QtCore.pyqtSignal(str) 
    def __init__(self,parent=None): 
     super(window, self).__init__(parent) 
     self.setupUi(self) 

     #other window setup 
     self._scanner.pushScan.clicked.connect(self._scanClicked) 

    def _scanClicked(self): 
     self.scanStarted.emit(self._scanner.getTextData()) 

和我的控制對象

class vis(QtCore.QObject): 
    def __init__(self): 
     self._oreList = [] 

     self._w = window() 
     self._w.scanStarted.connect(self._scanOre) 

    def _scanOre(self, rawText): 
     print "main ->", rawText 

當使用QtCore.QObject作爲我的參考,該信號將不會連接到_scanOre。當我將引用切換到python「object」時,它會正常工作。我一直在試圖弄清楚爲什麼它不會使用QtCore.QObject類型進行連接。

無論如何,信號也會在窗口類中連接良好。

我試着給_scanOre @ QtCore.pyqtSlot(str,name ='scanGo')並在信號創建中添加name參數。我不確定我在這裏錯過了什麼。

回答

2

你忘了初始化QObject

class vis(QtCore.QObject): 
    def __init__(self, parent=None): 
     super(vis, self).__init__(parent) # you are missing this line 
              # also the `parent` arg 
     self._oreList = [] 

     self._w = window.window() 
     self._w.scanStarted.connect(self._scanOre) 

    def _scanOre(self, rawText): 
     print "main ->", rawText 
+0

哦,我知道這將是東西容易,我俯瞰。 – ooklah