2009-12-04 75 views
5

我有一個QTableView和一個QStandardItemModel。是否有一列可以包含用戶可編輯而不使用委託或使用抽象模型類的複選框?並不是我無法做到這一點,我只是想盡量減少代碼,我會發現它過於簡單的複選框。如何在QTableView中添加用戶可編輯的複選框,僅使用QStandardItemModel

通過使用model.setData(index, Qt::Unchecked,Qt::CheckStateRole)這會創建複選框,但它不是用戶可編輯的(複選框旁邊是文本)。

我用modelTX.setData(index, FALSE),但是這會創建一個包含True和False的組合框。

我會嘗試setItemData

回答

14

請,請檢查下面的例子會爲你工作:

QStandardItemModel* tableModel = new QStandardItemModel(); 
// create text item 
tableModel->setItem(0, 0, new QStandardItem("text item")); 
// create check box item 
QStandardItem* item0 = new QStandardItem(true); 
item0->setCheckable(true); 
item0->setCheckState(Qt::Checked); 
item0->setText("some text"); 
tableModel->setItem(0, 1, item0); 
// set model 
ui->tableView->setModel(tableModel); 

希望這會有所幫助,至於

+0

THX的答覆。當我回來工作時,我會在星期一上班,但我認爲它會起作用。 – 2009-12-05 03:38:23

+0

它的工作原理,謝謝。但如何檢查每個複選框,如果它被檢查或不? – 2015-12-20 22:37:04

+1

@ Suda.nese使用'item0-> checkState()'出於這個目的。 PS。當通常爲每個setter方法使用Qt時,一個'setSomething()'有一個名爲'something()'的getter。 – 2016-01-29 08:48:27

相關問題