16

一部の入力にはQTextEditを使用します。でも箱の高さを調整したいです。一度に表示したい行数に基づいて高さを設定できますか?

4

5 に答える 5

11

を使用する場合はQPlainTextEdit、次のような方法でうまくいくはずです。

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

マージンとして2つまたは3つのピクセルを追加することをお勧めします。実験でわかります。

于 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

(QTextEditにはfontプロパティが必要です)QFontの1行のテキストの高さを決定するために使用します。その後、の高さの値に表示する行数を掛けて、ウィジェットの(最小-)高さをその値に設定します。QTextEditQFont

于 2011-03-10T11:13:07.307 に答える
1

QTextEditは通常のウィジェットであるため、minimumHeightプロパティを使用できます。ただ、線数で最低の高さを設定するのは本当に無理だと思います。これにより、フォントのサイズを変更するたびに、ウィジェットの最小サイズが自動的にサイズ変更されます。ただし、フォントのサイズがわかっている場合は、ウィジェットの使用可能な最小サイズを設定できます。

于 2011-03-10T11:09:20.297 に答える
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 に答える