访问 Qtableview 中的复选框
Accessing Checkboxes inside a Qtableview
我是Qt
新手,我正在尝试使用以下SetIndexWidget()
向QTableView
添加QCheckbox
列:
QSqlQueryModel * model = new QSqlQueryModel();
model->setQuery("select * from Rendezvous");
model->insertColumn(0);
model->setHeaderData(0, Qt::Horizontal, QObject::tr(""));
model->setHeaderData(1, Qt::Horizontal, QObject::tr("ID"));
model->setHeaderData(2, Qt::Horizontal, QObject::tr("Date"));
model->setHeaderData(3, Qt::Horizontal, QObject::tr("Heure"));
model->setHeaderData(4, Qt::Horizontal, QObject::tr("Type"));
model->setHeaderData(5, Qt::Horizontal, QObject::tr("Description"));
model->setHeaderData(6, Qt::Horizontal, QObject::tr("ID Client"));
ui->tableView_RDV->setModel(model);
ui->tableView_RDV->resizeColumnToContents(0);
for(int p=0;p<model->rowCount();p++)
{
ui->tableView_RDV->setIndexWidget(model->index(p,0),new QCheckBox());
}
这会在我的表格中添加一个复选框,我可以与之交互,但我不知道如何检查我的QTableView
中的哪些行已选中QCheckboxe
。
我很欣赏任何关于如何做到这一点的指示。
您应该使用Qt::CheckStateRole
来显示复选框。它要快得多,并且对应于Qt MVC:
for(int p=0;p<model->rowCount();p++)
{
auto checked = SomeLogic ? Qt::Checked : Qt::Unchecked;
auto index = model->index( p, 0 );
model->setData( index, checked, Qt::CheckStateRole );
}
备注:仅当您直接指定具有非空值的Qt::CheckStateRole
时,才会显示复选框。如果将其设置为空QVariant()
,则不会显示复选框。
以下代码片段可能会对您有所帮助:
for(int p=0;p<model->rowCount();p++)
{
QCheckBox* tmp = qobject_cast<QCheckBox*>(ui->tableView_RDV->indexWidget(model->index(p,0)));
if(tmp != NULL && tmp.isChecked())
{
//Do what you wants when it is checked
}
}
更新
在德米特里·萨佐诺夫的评论和Qt论坛上提供的信息之后使用qobject_cast
而不是dynamic_cast
相关文章:
- 根据变量使Qt UI中的复选框为已选中/未选中
- "动态创建的事件处理程序"复选框
- 有没有办法在取消选中复选框时隐藏按钮?
- 如何删除Qt设计器中自定义插件的QString属性的"translatable"复选框?
- 设置复选框选项C++
- 如何在所有者描述的 MFC CMenu 派生菜单中显示复选框?
- 如何在MFC对话框应用程序中默认将复选框设置为选中?
- 如何使复选框独占
- AccessObjectFromPoint 返回客户端对象而不是复选框
- Windows 32 API:2个复选框作为一个
- 如何在 QT3 中将复选框添加到 QFileDialog 窗口
- 在 QComboBox 中切换复选框
- 调整QT创建者的复选框
- 如何在C 上创建复选框过滤器
- 访问 Qtableview 中的复选框
- QTableView 如何保存复选框值 c++
- 如何让我的QTableView与QSqlTableModel具有复选框和多行?
- Qt4 QTableView和复选框点击事件
- QTableView 中的 Qt 复选框
- Qt QTableView实现切换按钮和复选框委托