Как установить количество строк для QTextEdit?

Я использую QTextEdit для некоторых входов. Но я хочу настроить высоту windows. Могу ли я установить высоту в зависимости от количества строк, которые я хочу видеть одновременно?

    Если вы используете QPlainTextEdit , что-то вроде этого должно сделать трюк:

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

    Возможно, вы захотите добавить два или три пикселя в качестве поля; эксперимент расскажет.

    Улучшение принятого ответа о QPlainTextEdit . В дополнение к lineSpacing значение для setFixedHeight должно содержать: 2 поля лежащего в основе QTextDocument , 2 ширины кадра и поля содержимого виджета. Кроме того, QFontMetrics необходимо получить из шрифта документа, а не из самого виджета. Итак, гипотетическая функция setHeight должна 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); } 

    Используйте QFont для определения высоты одной строки текста в QTextEdit (QTextEdit должен иметь свойство font ). После этого умножьте значение высоты QFont на количество строк, которые вы хотите показать, и установите высоту (минимальную) виджета на это значение.

    QTextEdit – обычный виджет, поэтому вы можете использовать свойство minimumHeight . Я считаю, однако, что невозможно установить минимальную высоту, основанную на количестве строк. Это автоматически изменит размер минимального размера виджета каждый раз, когда вы измените размер шрифта. Но если вы знаете размер шрифта, вы можете установить минимальный размер вашего виджета.

    Это должно работать:

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