调整QT的QTextEdit大小以匹配文本宽度

时间:2014-01-30 20:11:52

标签: html css qt qtextedit

我有一个QMainWindow,里面有一个带QTextEdit的QVBoxLayout。我使用insertHtml来固定CSS,后者基本上归结为具有恒定宽度的等宽线,因此它应该是可预测的,一旦一行进入,QTextEdit应显示整个文本的宽度。问题是,我不知道如何获得这个宽度。我尝试了很多东西:adjustSize(),获取底层QTextDocument的大小,QFontMetrics(不测量具有由样式表修改的类的HTML),甚至做

QFont f("monospace");
QFontMetrics fm(f);
QString s = QString("A").repeated(MyTextWidth);
unsigned NewWidth = fm.width(s)

产生一个应用于QTextEdit的值,setFixedWidth会产生不正确的结果。 那么我怎样才能自动设置QTextEdit的宽度(以及拥有它的QMainWindow)来显示整行文本而不使用水平滚动条?

1 个答案:

答案 0 :(得分:1)

您可以使用QTextDocument::idealWidth来确定实际文字宽度。在查询理想宽度之前使QTextEdit可见是很重要的。不要忘记将内容边距添加到其值中。

QTextEdit textEdit;
textEdit.setHtml("<p>test test test test test test</p><p>|||||||||</p>");
textEdit.show();
textEdit.setFixedWidth(textEdit.document()->idealWidth() +
                       textEdit.contentsMargins().left() +
                       textEdit.contentsMargins().right());

结果:

screenshot