C++ 无法在qtablewidget单元格中设置文本

C++ 无法在qtablewidget单元格中设置文本,c++,qt,qt5,C++,Qt,Qt5,我想在QTableWidget中有一个只读文本,所以我决定在每个单元格中插入一个QLabel。不幸的是,我看到的是: 以下是我用于此操作的代码: for (int row = 1; row < ui->currentSetting1TableWidget->rowCount(); row++) for (int col = 1; col < ui->currentSetting1TableWidget->colorCount(); col++) {

我想在
QTableWidget
中有一个只读文本,所以我决定在每个单元格中插入一个
QLabel
。不幸的是,我看到的是:

以下是我用于此操作的代码:

for (int row = 1; row < ui->currentSetting1TableWidget->rowCount(); row++)
    for (int col = 1; col < ui->currentSetting1TableWidget->colorCount(); col++) {
        QLabel *label = new QLabel(ui->currentSetting1TableWidget);
        label->setText("mytext");
        ui->currentSetting1TableWidget->setCellWidget(row, col, label);
    }
for(int row=1;rowcurrentSetting1TableWidget->rowCount();row++)
对于(int col=1;colcurrentSetting1TableWidget->colorCount();col++){
QLabel*label=新的QLabel(ui->currentSetting1TableWidget);
标签->设置文本(“我的文本”);
ui->currentSetting1TableWidget->setCellWidget(行、列、标签);
}
我看到两个问题:

  • 当我运行代码时,我得到了以下警告: QPaintDevice::metrics:设备没有度量信息

  • mytext
    显示在角标题单元格中。为什么会这样?我做错了什么?如何修复


  • ui->currentSetting1TableWidget->colorCount()
    您有代码补全辅助打字。你想要的。因为您为附加(
    colorCount()
    必须高于
    columnCount()
    )标签指定了不正确的位置,所以它们被分配到坐标(0,0)或非常接近的位置


    您也在从
    row=1
    进行迭代,但行是从0索引的,这就是为什么第一行没有标签的原因。跳过第一列并从
    1
    迭代是有意义的,因为有复选框。

    @flashburn也不需要标签,因为您可以使用QFlags/use将列设置为不可编辑QTableWidgetItem@deW1您可以展开“使用QTableWidgetItem”吗?你这么说是什么意思?@flashburn例如,这是xoryup的一个很好的用法,通过在其周围包装一个if,你可以通过不更改flagsCheck来设置表字段的条件,以保持可编辑性。下面这个问题的公认答案是:我想如果你想在任何视图中使用
    QLabel
    ,它可能会对你有所帮助,你做错了。该视图已经像
    QLabel
    一样支持显示文本和图像。项属性设置每个数据项的行为。