PyQT:在两个TableView之间传输

时间:2016-08-12 15:22:10

标签: python pyqt5

我想在两个QtTableView之间传输数据。为此,我首先选择要传输的行,然后单击" to_X_table"。

但我不明白如何用第一个填充第二个tableview。 我试过了:

self.to_X_table.clicked.connect(self.to_X_tableView)
def to_X_tableView(self):
    self.proxy = QtCore.QSortFilterProxyModel()
    self.proxy.setSourceModel(self.tableWidget_Input_Col.selectionModel())
    self.tableView_X.setModel(self.proxy)
    self.tableView_X.resizeColumnsToContents()

我收到此消息:

TypeError : setSourceModel(self,‌​QAbstractItemModel) : 1 argument unexpected type QItemSelectionModel

我真的不知道self.tableWidget_Input_Col.selectionModel()返回什么。我想这是一个模特。但似乎没有。

我也试图像这样创建我自己的模型(在这篇文章Get data from every cell from a QTableView之后)

def to_X_tableView(self):
    indexes = self.tableWidget_Input_Col.selectionModel().selectedRows()
    self.model = QtGui.QStandardItemModel()
    for index in sorted(indexes):
        print('Row %d is selected' % index.row())
        self.model.invisibleRootItem().appendRow(
                QtGui.QStandardItem(self.tableWidget_Input_Col.model.index(index.row, 0))) 

    self.proxy = QtCore.QSortFilterProxyModel()
    self.proxy.setSourceModel(self.tableWidget_Input_Col.selectionModel())
    self.tableView_X.setModel(self.proxy)
    self.tableView_X.resizeColumnsToContents() 

但是我收到了这个错误:

Traceback (most recent call last):
  File "ChartGUI.py", line 151, in to_X_tableView
    QtGui.QStandardItem(self.tableWidget_Input_Col.model.index(index.row, 0)

AttributeError: 'builtin_function_or_method' object has no attribute 'index'    

1 个答案:

答案 0 :(得分:0)

最后,我解决了我的问题。我第一次没有考虑这个模型。 在这里:

    self.modelX = QtGui.QStandardItemModel()
    indexes = self.tableWidget_Input_Col.selectionModel().selectedIndexes()
    temp=self.tableWidget_Input_Col.selectionModel().model() # need to consider the model !

    for index in sorted(indexes):
        self.modelX.invisibleRootItem().appendRow(
                QtGui.QStandardItem(str(temp.data(index))))   

    self.proxy = QtCore.QSortFilterProxyModel()
    self.proxy.setSourceModel(self.modelX)
    self.tableView_X.setModel(self.proxy)
    self.tableView_X.resizeColumnsToContents()