我想要一个简单的列标题,其中带有一个复选框,用于选择/取消选择 QTableView 中的所有行。单击标题中的复选框会导致选择或取消选择所有行。
当我想在表格单元格中添加一个复选框时,我必须只返回数据(..)中 Qt::CheckStateRole 的检查状态以获得所需的模型索引,如下所示。这按预期工作。
QVariant MyModel::data( const QModelIndex & rIndex, int iRole) const
{
...
if (iRole == Qt::Qt::CheckStateRole)
{
return checkstate;
}
}
但是当我想在标题单元格中添加一个复选框时,上述方法不起作用。听到是我的示例代码。
QVariant MyModel::headerData( int iSection, Qt::Orientation eOrientation, int iRole) const
{
...
if (iRole == Qt::CheckStateRole)
{
return checkstate;
}
}
在我的模型中,QTableView 不使用 Qt::CheckStateRole 调用 headerData() 函数,就像它调用 data() 函数一样。
为什么会出现这种行为?如何仅通过修改自定义表格模型在标题单元格中插入复选框?
(我不想为此创建自定义 QTableView 或 QHeaderView)
最佳答案
你不能这样做 - 默认情况下,Qt 不支持标题中的复选框。你可以阅读https://wiki.qt.io/Qt_project_org_faq#How_can_I_insert_a_checkbox_into_the_header_of_my_view.3F了解更多信息及其使用自定义 QHeaderView
关于c++ - QTableView 中标题单元格中的复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21557913/