2010-12-10 189 views
20

我需要能夠在QTableView的表格行中有按鈕/鏈接。這是打開一個對話框,以便更有效地編輯該行。Qt - QTableView - 表格中可點擊的按鈕

在網上看了幾個小時後,我還沒有找到一個體面的例子。

我知道這很可能是使用QItemDelegate來完成的,但我不確定如何在行中使用一個功能性小部件,而不必先強制該項進入編輯模式。

任何幫助將不勝感激。

+0

你是什麼意思,說「按鈕錶行」?整排?或者在一個單元中? – 2010-12-11 07:20:59

回答

1

你可以通過下劃線可點擊文本,然後捕獲模擬鏈路的功能:

作爲一個例子,在第二行(未測試的代碼)的第一列中嵌入的按鈕通過cellClicked(row,col)信號點擊單元格並檢查col == editColumn。那麼行將對應於您正在編輯的項目。

例如,

數據名稱|值1 |值2 | 編輯

connect (tableWidget, SIGNAL(cellClicked(int,int)), this, SLOT(editSlot(int, int))); 

... 

void ClassName::editSlot(int row, int col){ 
    if (col == 3) { 
    doWork(row); 
    } 
} 
+0

爲什麼接受的答案總是無法真正回答問題?定義新的信號插槽連接僅僅是在表定義時添加一個靜態按鈕或鏈接到一個表項是無意義的。老實說,StackOverflow應該默認動態標記當前接收到最多的讚揚爲「接受」的答案。 – 2018-02-28 08:10:36

20

您可以使用setIndexWidget獲取更多信息,請參閱Qt documentation

tableView->setIndexWidget(tableView->model()->index(2, 1), new QPushButton); 
+1

我已經讀過大型數據集,設置行級別的小部件會導致明顯的性能損失。 – cweston 2010-12-30 14:23:20