一部の入力にはQTextEditを使用します。でも箱の高さを調整したいです。一度に表示したい行数に基づいて高さを設定できますか?
5 に答える
を使用する場合はQPlainTextEdit
、次のような方法でうまくいくはずです。
void SetHeight (QPlainTextEdit* edit, int nRows)
{
QFontMetrics m (edit -> font()) ;
int RowHeight = m.lineSpacing() ;
edit -> setFixedHeight (nRows * RowHeight) ;
}
マージンとして2つまたは3つのピクセルを追加することをお勧めします。実験でわかります。
について受け入れられた答えを改善する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);
}
(QTextEditにはfontプロパティが必要です)QFont
の1行のテキストの高さを決定するために使用します。その後、の高さの値に表示する行数を掛けて、ウィジェットの(最小-)高さをその値に設定します。QTextEdit
QFont
QTextEditは通常のウィジェットであるため、minimumHeightプロパティを使用できます。ただ、線数で最低の高さを設定するのは本当に無理だと思います。これにより、フォントのサイズを変更するたびに、ウィジェットの最小サイズが自動的にサイズ変更されます。ただし、フォントのサイズがわかっている場合は、ウィジェットの使用可能な最小サイズを設定できます。
これは機能するはずです:
QTextEdit *myEdit = new QTextEdit(myContentString);
QSize myEditSize = myEdit->document()->size().toSize();
myEditSize.setWidth(QWIDGETSIZE_MAX);
myEdit->setMaximumSize(myEditSize);