无法在 qtablewidget 单元格中设置文本 [重复]

Posted

技术标签:

【中文标题】无法在 qtablewidget 单元格中设置文本 [重复]【英文标题】:unable to set text in qtablewidget cells [duplicate] 【发布时间】:2016-10-05 22:26:29 【问题描述】:

我想在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);
    

我看到两个问题:

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

    mytext 显示在角落标题单元格中。为什么会这样?我做错了什么以及如何解决这个问题?

【问题讨论】:

检查以下问题的接受答案:***.com/questions/2574115/…我认为它可能对您有所帮助 如果你想在任何视图中使用QLabel,那你就错了。该视图已经支持显示文本和图像,就像QLabel 一样。项属性设置每个数据项的行为。 【参考方案1】:

ui-&gt;currentSetting1TableWidget-&gt;colorCount() 你有代码完成辅助拼写错误。你想要columnCount()。因为您为其他(colorCount() 必须高于 columnCount())标签指定了错误的位置,所以它们被分配到坐标 (0,0) 或非常接近的位置。

您还从 row = 1 进行迭代,但行的索引从 0 开始,这就是您在第一行中没有标签的原因。由于复选框,跳过第一列并从1 迭代它们是有意义的。

【讨论】:

@flashburn 也不需要标签,因为您可以使用 QFlags 将列设置为不可编辑/使用 QTableWidgetItem @deW1 你能扩展“使用QTableWidgetItem”吗?你这是什么意思? @flashburn gist.github.com/deW1/2ebfadaefc7c5682b2896e6d8b540417 例如 这是一个很好的 xor 用法 是的,通过在它周围包裹一个 if,您可以通过不更改标志为要保持可编辑的表字段设置条件

以上是关于无法在 qtablewidget 单元格中设置文本 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 QTableWidgetItem 中设置单元格边框和背景颜色?

qtablewidgetitem 无法 new

在单元格javascript中设置类型文本

如何在 OpenOffice 中设置 TextTable 单元格的文本方向?

在集合视图单元格中设置文本时出错

Ag Grid 部分单元格格式 - 例如如何在单元格中设置一些文本样式 - 粗体、斜体、彩色(但不是其他文本)