如何仅使用QStandardItemModel在QTableView中添加用户可编辑复选框

yan*_*nce 6 qt

我有一个QTableView和一个QStandardItemModel.是否有列可以包含用户可编辑的复选框,而无需使用委托或使用抽象模型类?这不是我不能做到的,我只是想最小化代码,我会发现简单的复选框有点过分.

通过使用 model.setData(index, Qt::Unchecked,Qt::CheckStateRole)它创建复选框但不是用户可编辑的(复选框旁边的文本).

我使用modelTX.setData(index, FALSE)但是这会创建一个包含True和False的组合框.

我会试试setItemData.

ser*_*nko 17

请检查以下示例是否适合您:

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);
Run Code Online (Sandbox Code Playgroud)

希望这有帮助,问候

  • @Suda.nese 使用 `item0->checkState()` 来达到此目的。附言。当使用 Qt 时,通常每个 setSomething() 方法都有一个名为“something()”的 getter。 (2认同)