遍历构造函数中的QTableWidget单元吗?

Dij*_*kay 0 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

由于标题是通过Qt Designer使用双击表单进行初始化的,因此我无法从代码中了解列/行的计数(除非通过硬编码对其进行编码,但我想避免这种情况),但我找不到将标志应用于所有项目的任何方法。

我还看到了一些针对修改事件本身的变通办法,以防止数据修改,但是我也希望避免这种情况。

有没有一种方法可以正确设置这些标志,还是必须摆脱Qt Designer部分才能在构造函数中添加所有标头初始化?

小智 5

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

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);
        }
    }
Run Code Online (Sandbox Code Playgroud)

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