无法在 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->currentSetting1TableWidget->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 中设置单元格边框和背景颜色?