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

时间:2014-03-20 00:21:49

标签: c++ qt user-interface

问题

我正在使用QTableWidget(Item)来呈现一些数据。为此,我需要使用斜体或设置粗体文本的某些部分。问题:我不想将整个单元格/框,只是单元格中的部分文本斜体化。

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

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

求购

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

  

Exa mple 单元格文字

(好的符号,如Exa<b>mple</b> Cell <i>Text</i>只是次要方面)

注意:示例应该是一个单词。

1 个答案:

答案 0 :(得分:0)

解决

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

所有项目窗口小部件类都提供在每个单元格中呈现/绘制自定义的功能。

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

所以这完全符合我的问题,现在我将使用这个解决方案。

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

上述解决方案的缺点是,设计和数据完全混合。如果设置引用交互标记,则可以在QLabel中编辑文本。但是你总是需要使用QLabel来获取文本。当在Cell中另外设置一个也使用QLabel的QTableWidgetItem时,它们会重叠丑陋。所以可以使用QTableView。这是link