擅长:python、mysql、java
<p>您可以重写<code>paintEvent()</code>,并通过以下方式实现它:</p>
<pre><code>class QElidedLabel(QLabel):
def paintEvent(self, event):
painter = QPainter(self)
textDoc = QTextDocument()
metrics = QFontMetrics(self.font())
elided = metrics.elidedText(self.text(), Qt.ElideRight, self.width() - 10)
textDoc.setPlainText(elided)
textDoc.drawContents(painter)
</code></pre>
<p>这将自动绘制Elided标签,您无需在其他任何地方更改代码。您还可以将<code>QLabel</code>的大小策略设置为<code>MinimumExpanding</code>,以确保<code>QLabel</code>占用最大可用空间。这样<code>self.width()</code>返回当前最大宽度。您可以查看有关<code>QTextDocument()</code>和<code>QFontMetrics()</code>工作的文档。另外,<code>self.width() - 10</code>只需确保省略标签中的<code>'...'</code>不被隐藏,您可以删除<code>- 10</code>,如果删除后<code>..</code>对您可见,只需使用<code>self.width()</code></p>