2016-08-12 105 views
0

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

但我不明白如何用第一个填充第二个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 

I'dont真的知道什么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

当你尝试这样的结果是什么?如果出现错误,请发布回溯。 – Jeff

+0

TypeError:setSourceModel(self,QAbstractItemModel):1个参数意外类型QItemSelectionModel。不能fint python文档(只有C++文档https://doc.qt.io/qt-5/qtableview.html) – Coolpix

+0

其实如果你编辑你的原始文章,所以格式更容易阅读,并张贴完全回溯,那将是最有用的。尽管看起来错误在第四行,并且无论您从self.tableWidget_Input_Col.selectionModel()调用的是不是self.proxy.setSourceModel()预期会接收的类型的参数。如果你发布任何你已经尝试过的东西,这也很有帮助。 – Jeff

回答

0

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

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() 
相关问题