我有一个QText编辑 https://doc.qt.io/qt-5/QTextEdit.html充当“显示者”(可编辑为 false)。它显示的文本是自动换行的。现在我确实希望设置此文本框的高度,以便文本完全适合(同时也遵守最大高度)。
基本上,布局下方的小部件(在相同的垂直布局中)应该获得尽可能多的空间。
如何最容易实现这一目标?
我找到了一个非常稳定、简单的解决方案QFontMetrics
!
from PyQt4 import QtGui
text = ("The answer is QFontMetrics\n."
"\n"
"The layout system messes with the width that QTextEdit thinks it\n"
"needs to be. Instead, let's ignore the GUI entirely by using\n"
"QFontMetrics. This can tell us the size of our text\n"
"given a certain font, regardless of the GUI it which that text will be displayed.")
app = QtGui.QApplication([])
textEdit = QtGui.QPlainTextEdit()
textEdit.setPlainText(text)
textEdit.setLineWrapMode(True) # not necessary, but proves the example
font = textEdit.document().defaultFont() # or another font if you change it
fontMetrics = QtGui.QFontMetrics(font) # a QFontMetrics based on our font
textSize = fontMetrics.size(0, text)
textWidth = textSize.width() + 30 # constant may need to be tweaked
textHeight = textSize.height() + 30 # constant may need to be tweaked
textEdit.setMinimumSize(textWidth, textHeight) # good if you want to insert this into a layout
textEdit.resize(textWidth, textHeight) # good if you want this to be standalone
textEdit.show()
app.exec_()
(请原谅,我知道你的问题是关于 C++ 的,我正在使用 Python,但是在Qt
无论如何,它们几乎是同一件事)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)