Qt5 C++如何访问模型中的项目以检查状态
Qt5 C++ How do you access items from a model to check state?
我有一个包含多个复选框项目的组合框,我需要能够对它们进行迭代,并确定它们是否被选中,或者更合适的是,一旦选中一个项目,就启动一个事件,但我似乎无法使信号/插槽组合正确工作。
这是我的一些代码:
void MainWindow::setupQueryBuilder(Ui::MainWindow* ui)
{
QStandardItemModel* assessmentModel = new QStandardItemModel(3, 1);
QStandardItem* assessmentPleaseSelect = new QStandardItem();
QStandardItem* assessmentVisionScreening = new QStandardItem();
QStandardItem* assessmentHearingAssessment = new QStandardItem();
QStandardItem* assessmentDevelopmentalAssessment = new QStandardItem();
assessmentPleaseSelect->setText("Please Select...");
assessmentPleaseSelect->setFlags(Qt::ItemIsEnabled);
assessmentPleaseSelect->setData(Qt::CheckStateRole);
assessmentVisionScreening->setText("Vision Screening");
assessmentVisionScreening->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled);
assessmentVisionScreening->setData(Qt::Unchecked, Qt::CheckStateRole);
assessmentHearingAssessment->setText("Hearing Assessment");
assessmentHearingAssessment->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled);
assessmentHearingAssessment->setData(Qt::Unchecked, Qt::CheckStateRole);
assessmentDevelopmentalAssessment->setText("Developmental Assessment");
assessmentDevelopmentalAssessment->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled);
assessmentDevelopmentalAssessment->setData(Qt::Unchecked, Qt::CheckStateRole);
assessmentModel->insertRow(0, assessmentPleaseSelect);
assessmentModel->insertRow(1, assessmentVisionScreening);
assessmentModel->insertRow(2, assessmentHearingAssessment);
assessmentModel->insertRow(3, assessmentDevelopmentalAssessment);
ui->SearchAssessmentSelect->setModel(assessmentModel);
}
我没有尝试过,但从文档中可以看出,QStandardItemModel
的signal
称为itemChanged(QStandardItem *item)
。您想要做的是创建一个名为(例如)modelItemChanged(QStandardItem *item)
和connect
的slot
,它们与connect(assessmentModel, SIGNAL(itemChanged(QStandardItem *)), this, SLOT(modelItemChanged(QStandardItem *)))
一起使用。
这应该设置您的模型在QStandardItem
更改时触发slot
,并且它将传递一个指向已更改项的指针。在modelItemChanged(QStandardItem *item)
函数中,您可以查询QStandardItem *item
以查看它处于什么状态。
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 无法在 CLion 中构建 C++ 项目
- 运行同一解决方案的另一个项目的项目
- CMake-按正确顺序将项目与C运行时对象文件链接
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 欧拉项目#8答案是大以获得有效答案
- 从链接列表c++中删除一个项目
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 既然存在危险,为什么项目要使用-I include开关
- cmake在我的项目中所需的所有静态库都不成功
- QT通过C++添加映射QML项目
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 在linux上调试巨大的C++项目
- 在其他文件中创建类时在 c++ 项目中不起作用
- 严重性代码说明项目文件行抑制状态错误 C2676 二进制">>":"std::ifstream"
- 如何使用预先定义的状态创建自定义快速QML项目
- 按选中状态对 QListWidget 中的项目进行排序
- QGraphics项目项更改函数与项的状态不匹配?
- Qt5 C++如何访问模型中的项目以检查状态
- Qt的ItemViewsNG项目的状态如何?