qt - 禁用编辑并将项目设置为 QTableWidget 中的多行

标签 qt qtableview qtablewidget

|名称 |数学 |物理学|平均成绩|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |

  1. “数学”和“物理”栏是供用户输入数字的,“平均值”栏不能输入数值,它仅用于显示用户输入“数学”和“物理”后的平均值“年级。如何禁用编辑但仍在“平均值”列中显示计算值?

  2. 我想将内容写入多行,但我的代码不起作用

    ui->tableWidget->setColumnCount(4);
    ui->tableWidget->setRowCount(8);
    ui->tableWidget->setSortingEnabled(false);
    QTableWidgetItem *newItem = new QTableWidgetItem(tr("Hello World"));
    for (int i=0; i< ui->tableWidget->rowCount(); i++)
        ui->tableWidget->setItem(i, 0, newItem);
    

有一条这样的消息

QTableWidget: cannot insert an item that is already owned by another QTableWidget

我还是不明白,因为我是QT的新手。请帮助我,非常感谢! :)

更新代码:

for (int i = 0; i < ui.tableWidget->rowCount(); i++) {
    QTableWidgetItem *icon_item = new QTableWidgetItem;
    QIcon icon(":/myproject/icon/test.png");
    icon_item->setIcon(icon);
    ui.tableWidget->setItem(i, 0, icon_item);
}

for (int j = 0; j < ui.tableWidget->rowCount(); j++) {
    ui.tableWidget->item(j, 3)->setFlags(ui.tableWidget->item(j, 3)->flags() & ~Qt::ItemIsEditable);
}

最佳答案

  1. 您可以使用QTableWidgetItem::setFlags() 。要保留其他默认标志,但删除 Qt::ItemIsEditable:

    item->setFlags(item->flags() & ~Qt::ItemIsEditable);
    
  2. 您不能将同一个 QTableWidgetItem 实例设置到多个单元格。让您开始:

    for (...) {
        QTableWidgetItem *item = new QTableWidgetItem(...);
        tableWidget->setItem(...);
    }
    

关于qt - 禁用编辑并将项目设置为 QTableWidget 中的多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38296065/

相关文章:

c++ - QDoubleValidator 不工作?

c++ - 添加 qmake 文件(.pro)时这些命令的含义是什么

拖动结束时未调用 QTableView mouseRelease 事件,bug?

c++ - 单元格 0 中带有 QCheckBox 的 Horizo​​ntalHeader

qt - QML 覆盖项样式

Qt QMenu 去除阴影

python - 带有一列图像的 QTableView

python - PyQt QTableView 获取跨多列的单元格的起始索引?

c++ - 在 QTableWidget 中选择 QComboBox

c++ - 隐藏 qtablewidget 和颜色列中的行数