的问题 的
我正在使用QTableWidget(Item)来呈现一些数据。为此,我需要使用斜体或设置粗体文本的某些部分。问题:我不想将整个单元格/框,只是单元格中的部分文本斜体化。
的观 的
:使用QTableWidgetItem引用对应的单元格并尝试修改样式(例如setFont(font))。但这种操作似乎总是改变整个细胞?
我还发现this对我的QTableWidget问题没有帮助。
的求购 的
:要有一个QTableWidget,例如:包含以下单元格的2行和列:
Exa mple 单元格文字
(好的符号,如Exa<b>mple</b> Cell <i>Text</i>
只是次要方面)
注意:示例应该是一个单词。
答案 0 :(得分:0)
的解决强> 的
我没有看到树木。感谢Salvatore Avanzo,他是完全正确的。
所有项目窗口小部件类都提供在每个单元格中呈现/绘制自定义的功能。
QTableWidget
提供setCellWidget(.. QWidget..)
; QListWidget
和QTreeWidget
提供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。