2009-12-04 42 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

相关问题