如何设置QTextEdit的行数?

时间:2011-03-10 10:56:20

标签: c++ qt qt4 qtextedit

我使用QTextEdit进行输入。但我想调整盒子的高度。我可以根据我想要一次看到的行数来设置高度吗?

5 个答案:

答案 0 :(得分:12)

如果你使用QPlainTextEdit,这样的事情应该可以解决问题:

void SetHeight (QPlainTextEdit* edit, int nRows)
  {
  QFontMetrics m (edit -> font()) ;
  int RowHeight = m.lineSpacing() ;
  edit -> setFixedHeight  (nRows * RowHeight) ;
  }

您可能希望添加两个或三个像素作为边距;实验会说明。

答案 1 :(得分:3)

改进关于QPlainTextEdit的已接受答案。除了lineSpacing之外,setFixedHeight的值还应包含:基础QTextDocument的2个边距,框架的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);
}

答案 2 :(得分:2)

使用QFont确定QTextEdit中单行文本的高度(QTextEdit应具有 font 属性)。然后将QFont height 值乘以您想要显示的行数,并将小部件的(最小 - )高度设置为该值。

答案 3 :(得分:1)

QTextEdit是一个普通的小部件,因此您可以使用minimumHeight属性。但是,我认为根据线数设置最小高度是不可能的。每次更改字体大小时,这将自动调整窗口小部件的最小大小。但是,如果您知道字体的大小,则可以设置窗口小部件的一些可用最小大小。

答案 4 :(得分:0)

这应该有效:

QTextEdit *myEdit = new QTextEdit(myContentString);
QSize myEditSize = myEdit->document()->size().toSize();
myEditSize.setWidth(QWIDGETSIZE_MAX);
myEdit->setMaximumSize(myEditSize);