我想在两个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'
答案 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()