c++ - QTableView 中标题单元格中的复选框

标签 c++ qt qt4

我想要一个简单的列标题,其中带有一个复选框,用于选择/取消选择 QTableView 中的所有行。单击标题中的复选框会导致选择或取消选择所有行。

enter image description here

当我想在表格单元格中添加一个复选框时,我必须只返回数据(..)中 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/

相关文章:

c++ - DLL GetProcAddress 问题 - 另一个运行时检查失败

linux - 使用 eclipse 在 linux 上进行 qt 开发?

macos - 从源代码构建 Qt 时如何指定 macOS 最低 SDK 版本?

c++ - 如何使用 Qt 中的默认程序打开服务器上的文件?

c++ - 如何使用 QT 打印 prn 文件?

c++ - 将 C++/Qt4 示例转换为 PyQt4

c++ - QAbstractTableModel headerData 移除表头

c++ - _bstr_t 到 UTF-8 可能吗?

C++ 什么是命名转换等价物

qt - Qt Creator 中的 "Undefined reference"错误