2014-01-21 35 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否则其他人(可能)认为它仍然是开放/未解决,可能会试图发布更多的答案。 –