我有一个 QTextEdit,它充当“显示器”(不可编辑)。它显示的文本是自动换行的。现在我想设置此文本框的高度,以便文本恰好适合其中(同时也要遵守最大高度)。
基本上,在相同的垂直布局中,该布局下方的窗口小部件应尽可能获得更多的空间。
如何最轻松地实现这一点?
基本上,在相同的垂直布局中,该布局下方的窗口小部件应尽可能获得更多的空间。
如何最轻松地实现这一点?
我发现一个相当稳定,简洁的解决方案,使用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 ++的,但我在Qt
中使用的是Python,但无论如何它们基本上是相同的)。
可以通过以下方式获取基础文本的当前大小
QTextEdit::document()->size();
#include <QTextEdit>
#include <QApplication>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTextEdit te ("blah blah blah blah blah blah blah blah blah blah blah blah");
te.show();
cout << te.document()->size().height() << endl;
cout << te.document()->size().width() << endl;
cout << te.size().height() << endl;
cout << te.size().width() << endl;
// and you can resize then how do you like, e.g. :
te.resize(te.document()->size().width(),
te.document()->size().height() + 10);
return a.exec();
}
setText()
命令时大小没有被设置。 - paul23除非您需要QTextEdit
的特定功能,否则打开自动换行的QLabel
将完全满足您的需求。
.setFixedWidth( your_width_integer )
和 .setFixedSize( your_width, your_height )
非常有用。不确定 C 是否有类似的窗口小部件属性。