c++ - 在构造函数中迭代 QTableWidget 单元格?

标签 c++ qt constructor qt-designer qtablewidget

我想从其构造函数中将 QTableWidget 的子类设置为只读,但我找不到将标志放在所有项目上的方法,并且显示的代码不起作用,因为在构造函数中调用了 columnCount 和 rowCount ,因此返回 0。

for (int i=0;i<this->columnCount();i++) {
    for (int j=0;j<this->rowCount();j++) {
        this->item(i,j)->setFlags(Qt::ItemFlag::NoItemFlags);
    }
}

由于 header 是通过 Qt Designer 使用双击表单初始化的,所以我没有办法从代码中知道列/行数(除非通过硬编码,但我想避免这种情况),而且我找不到任何方法将标志应用于所有项目。

我也看过一些workarounds working on the modification event itself to prevent data modification ,但我也宁愿避免这种情况。

有没有办法正确设置这些标志,或者我是否必须去掉 Qt Designer 部分才能在构造函数中添加所有 header 初始化?

最佳答案

嘿,这解决了你的问题......

for (int i=0;i< ui->tableWidget->rowCount();i++) {
        for (int j=0;j< ui->tableWidget->columnCount();j++) {
            QTableWidgetItem *item =  ui->tableWidget->item(i,j);
            item->setFlags(Qt::NoItemFlags);
        }
    }

只需尝试一下,您就可以轻松找出代码中的问题... rowCount() 和 coloumnCount() api 应该正确对齐,它的 item() API,而不是 itemAT().. 请检查。

关于c++ - 在构造函数中迭代 QTableWidget 单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38955396/

相关文章:

c++ - 在构造函数中分配双向链表指针

c++ - 如何在 gdb 中为 C++ 对象的所有构造函数同时设置断点?

c++ - VS 2010 中的复数问题

c++ - 在 QLineEdit 中更改占位符文本的颜色

c++ - 文件不存在 - 相关错误。构建开源应用程序 QCAD 的问题

c++ - 在构造函数或 init 函数中分配内存?

c++ - Qt 在 QtWebEngine View 中显示 QImage 或像素图(从 C++ 到 HTML)

c++ - 数组元素值、元素地址和指针增量

c++ - reinterpret_cast 的目的是什么

c++ - 如何在 OSX 应用程序的标题栏中的 Qt 中添加全屏图标?