gpt4 book ai didi

python - QListWidget 的一行中有多种字体

转载 作者:行者123 更新时间:2023-12-01 02:21:44 26 4
gpt4 key购买 nike

我需要在“.ui”文件中的 QListWidget 提出的不同选项中包含文本和希腊符号(用于简单的数学方程)(我以前使用 Qt Designer,如果重要的话我喜欢 python)。我希望选项显示如下:

theta = phi^2 (toto et al.)
theta = phi^2.5 (tata et al.)
theta = 1-log(phi/2) (mister brown et al.)
...

将“theta”和“phi”替换为其符号。奇怪的是,事情并没有那么简单……

如何在 QListWidget 的一行中定义多种字体?与 Qt Designer 相同的问题。

最佳答案

一个可能的解决方案是使用 HTML 生成方程式的符号,例如以下几行:

&theta;  = &phi;<sup>2</sup> (toto et al.)
&theta; = &phi;<sup>2.5</sup> (tata et al.)
&theta; = 1-log(&phi;/2) (mister brown et al.)

生成以下输出:

θ = φ2(toto 等人)
θ = φ2.5(塔塔等人)
θ = 1-log(φ/2)(布朗先生等人)

但是 QListWidget 无法识别这种格式,解决方案是创建一个委托(delegate)来识别该格式:

enter image description here

class HTMLDelegate(QtWidgets.QStyledItemDelegate):
def paint(self, painter, option, index):
self.initStyleOption(option,index)
painter.save()
doc = QtGui.QTextDocument()
doc.setHtml(option.text)
option.text = ""
option.widget.style().drawControl(QtWidgets.QStyle.CE_ItemViewItem, option, painter)

painter.translate(option.rect.left(), option.rect.top())
clip = QtCore.QRectF(0, 0, option.rect.width(), option.rect.height())
doc.drawContents(painter, clip)
painter.restore()

def sizeHint(self, option, index):
self.initStyleOption(option,index)
doc = QtGui.QTextDocument()
doc.setHtml(option.text)
doc.setTextWidth(option.rect.width())
return QtCore.QSize(doc.idealWidth(), doc.size().height())

然后我们使用以下几行将他添加为代表:

qlistwidget.setItemDelegate(HTMLDelegate())

输出:

enter image description here

完整的示例可以在下面的link中找到。

关于python - QListWidget 的一行中有多种字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47890913/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com