2016-08-12 76 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()