2014-01-21 63 views
1

我需要一個簡單的例子:如何連接selectRow事件(如果pyside存在此事件)並調用相應的處理程序。對於如果您使用的是QTableView中例如我需要幫助連接pyside qtableview中的事件。 (PySide新手)

self.table_view.selectedRow.connect(lambda: self.handler(param)) 
+0

你能張貼建議,工作代碼?我的意思是一個包含一些數據和你想做什麼的'TableView'的最小例子。 –

回答

3

,你需要連接到其selectionModelselectionChanged信號。然後,您可以使用選擇模型的selectedRows方法獲取選定的行(其中「選定的行」表示整行被選中)。

這裏有一個簡單的演示:

from PySide import QtGui, QtCore 

class Window(QtGui.QWidget): 
    def __init__(self, rows, columns): 
     QtGui.QWidget.__init__(self) 
     self.table = QtGui.QTableView(self) 
     model = QtGui.QStandardItemModel(rows, columns, self.table) 
     for row in range(rows): 
      for column in range(columns): 
       item = QtGui.QStandardItem('(%d, %d)' % (row, column)) 
       item.setTextAlignment(QtCore.Qt.AlignCenter) 
       model.setItem(row, column, item) 
     self.table.setModel(model) 
     selection = self.table.selectionModel() 
     selection.selectionChanged.connect(self.handleSelectionChanged) 
     layout = QtGui.QVBoxLayout(self) 
     layout.addWidget(self.table) 

    def handleSelectionChanged(self, selected, deselected): 
     for index in self.table.selectionModel().selectedRows(): 
      print('Row %d is selected' % index.row()) 

if __name__ == '__main__': 

    import sys 
    app = QtGui.QApplication(sys.argv) 
    window = Window(5, 5) 
    window.show() 
    window.setGeometry(600, 300, 600, 250) 
    sys.exit(app.exec_()) 
+0

哦,謝謝你!這個例子很像水! – user1936566

+0

@ user1936566看到這個鏈接:http://stackoverflow.com/help/someone-answers。 Upvotes/Accept在這裏比'謝謝你'更重要。如所述的 – neuronet

+0

@ user1936566;該問題應該標記爲解決http://meta.stackexchange.com/a/5235/231583否則其他人(可能)認爲它仍然是開放/未解決,可能會試圖發佈更多的答案。 –