繁体   English   中英

QT C ++ QTableWidget(Item)部分斜体化(强调)文本

[英]QT C++ QTableWidget(Item) partially italicize (emphasize) text

问题

我正在使用QTableWidget (项目)来表示某些数据。 为此,我需要将文本的某些部分用斜体或粗体显示。 问题:我不想将整个单元格/框斜体化,而只是将单元格中的部分文本斜体化。

主意

:使用QTableWidgetItem引用对应的单元格并尝试修改样式(例如setFont(font))。 但是这种操作似乎总是会改变整个细胞吗?

我还发现对我的QTableWidget问题没有帮助。

通缉

:要有一个QTableWidget,例如包含2行和包含单元格的列,例如:

示例单元格文本

(像Exa<b>mple</b> Cell <i>Text</i>这样的漂亮符号只是次要的方面)

注意:示例应为一个单词。

解决了

我没有看到树木的木头。 感谢Salvatore Avanzo,他完全正确。

所有Item Widget类都提供了在每个单元格中呈现/绘制自定义内容的功能

QTableWidget提供setCellWidget(.. QWidget..) ; QListWidgetQTreeWidget提供setItemWidget(..QWidget..) 因此,您可以使用QWidget的任何子类(所有ui对象的基础)来绘制一些自定义内容。 为了我的目标,我需要能够设置自定义的部分强调/斜体文本。 用于绘制文本的QWidget的Refering子类是QLabel (它本身也是QPainDevice的子类)。 调用paintEvent(..)时将绘制QWidget的QWidget / QWidget子类(重新实现QLabel)。 QLabel还支持RichText功能(默认情况下使用flag),例如,您可以使用<b>foo</b>获取foo

因此,这完全适合我的问题,我现在将使用此解决方案。

预测更好的结构化解决方案

上述解决方案的吸引人之处在于,设计和数据完全混合在一起。 如果设置了引用的交互标签,则可以在QLabel中编辑文本。 但是,您始终需要使用QLabel来获取文本。 在还使用QLabel的单元格中另外设置QTableWidgetItem时,它们很难覆盖。 因此,可以使用QTableView。 这是一个链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM