我对一些输入使用 QTextEdit。但我想调整盒子的高度。我可以根据我希望一次可见的行数来设置高度吗?
问问题
22124 次
5 回答
11
如果你使用QPlainTextEdit
,这样的事情应该可以解决问题:
void SetHeight (QPlainTextEdit* edit, int nRows)
{
QFontMetrics m (edit -> font()) ;
int RowHeight = m.lineSpacing() ;
edit -> setFixedHeight (nRows * RowHeight) ;
}
您可能想要添加两个或三个像素作为边距;实验会告诉你。
于 2011-03-10T14:08:42.323 回答
7
改进关于QPlainTextEdit
. 除了lineSpacing
,值setFixedHeight
应该包含:底层的 2 个边距,QTextDocument
框架的 2 个宽度和小部件的内容边距。除此之外,QFontMetrics
必须从文档的字体中获取,而不是从小部件本身获取。因此,假设函数setHeight
应如下所示:
void setHeight (QPlainTextEdit *ptxt, int nRows)
{
QTextDocument *pdoc = ptxt->document ();
QFontMetrics fm (pdoc->defaultFont ());
QMargins margins = ptxt->contentsMargins ();
int nHeight = fm.lineSpacing () * nRows +
(pdoc->documentMargin () + ptxt->frameWidth ()) * 2 +
margins.top () + margins.bottom ();
ptxt->setFixedHeight (nHeight);
}
于 2017-10-29T06:09:14.383 回答
2
用于QFont
确定单行文本中的高度QTextEdit
(QTextEdit 应该有一个字体属性)。之后,将QFont
'高度值乘以要显示的行数,并将小部件的(最小)高度设置为该值。
于 2011-03-10T11:13:07.307 回答
1
这应该有效:
QTextEdit *myEdit = new QTextEdit(myContentString);
QSize myEditSize = myEdit->document()->size().toSize();
myEditSize.setWidth(QWIDGETSIZE_MAX);
myEdit->setMaximumSize(myEditSize);
于 2011-08-17T16:43:31.790 回答
1
QTextEdit 是一个普通的小部件,因此您可以使用minimumHeight属性。但是,我相信根据行数设置最小高度确实是不可能的。每次更改字体大小时,这都会自动调整小部件的最小大小。但是如果你知道字体的大小,你可以设置你的小部件的一些可用的最小尺寸。
于 2011-03-10T11:09:20.297 回答