我想从其构造函数中将 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/