2013-07-03 29 views
0

我是Pyhthon和Qt的新手,因此這個基本問題。我想要的是,當我點擊QTreeWidget中的一個項目時,會調用一個事件處理程序,它告訴我哪個項目已被點擊。我試過的代碼是:如何在PyQt4的點擊反應QTreeWidget

self.dir_tree = QTreeWidget() 
    self.dir_tree.setColumnCount (3) 
    self.dir_tree.setHeaderLabels (("File", "Type", "Size")) 
    self.dir_tree.connect (dir_tree, SIGNAL ("itemClicked (QTreeWidgetItem*, int)"), self.onClickItem) 

def onClickItem (self, column): 
    print (column) 

這不運行,錯誤代碼是:

TypeError: arguments did not match any overloaded call: 
    QObject.connect(QObject, SIGNAL(), QObject, SLOT(),Qt.ConnectionType=Qt.AutoConnection): argument 1 has unexpected type 'function' 
    QObject.connect(QObject, SIGNAL(), callable, Qt.ConnectionType=Qt.AutoConnection): argument 1 has unexpected type 'function' 
    QObject.connect(QObject, SIGNAL(), SLOT(), Qt.ConnectionType=Qt.AutoConnection): argument 1 has unexpected type 'function' 

我在做什麼錯?還有一個與此有關的問題:我怎麼才能找出哪個項目被點擊?

我找不到這個教程,任何建議是值得歡迎的。

感謝您的任何幫助。

回答

1

問題問得太早,經過很多實驗後我找到了答案。該代碼在提到self.dirtree和從self.dir_tree而不是self自動連接時是錯誤的。所以,正確的代碼應該是:

self.connect (self.dir_tree, SIGNAL ("itemClicked(QTreeWidgetItem*, int)"), self.onClickItem) 

和一些實驗導致了以下回調:

def onClickItem (self, item, column): 
    print (item, column) 

項是指點擊QTreeWidgetItem本身(在我的情況下,額外的信息派生類:仍然正常工作)並列到點擊列。

最後一個問題依然存在。我仍然沒有很好的掌握信號/插槽。任何指向優秀教程的指針都是受歡迎的。