Qt:如何自动调整QTextEdit对象的大小

时间:2017-05-23 21:27:59

标签: c++ qt

当文本字符串大于给定的几何图形时,如何自动调整QTextEdit对象的大小以自动调整大小?

在下面的示例中,我将QTextEdit框的几何定义为100x100。但是,我想要显示的文本字符串可能比这大得多。

void MainWindow::display_text()
{
    QTextEdit *text = new QTextEdit(this);
    text->setWordWrapMode(QTextOption::NoWrap);
    text->setFontPointSize(24);

    /* Set the text box to be 100x100 */
    text->setGeometry(1, 1, 100, 100);

    /* The destination field may be too large to fit in the text box */
    QString arg = QString("Destination: %1").arg(destination);
    text->append(arg);

    text->show();
}

我希望文本字符串可见(即不滚动)并关闭自动换行。

1 个答案:

答案 0 :(得分:0)

您可以使用QFontMetrics来计算。

QFontMetrics fm(text->font());
QString myText = text->toPlainText();
int calcWidth = fm.width(myText);
int calcHeight = fm.height(myText);

从那时起,您可以使用这些值将几何图形设置为您喜欢的任何尺寸。

text->setGeometry(1, 1, calcWidth, calcHeight);//Or whatever calculations you want

要随时更改大小,请使用信号和插槽,然后再次调用该代码。 QTextEdit有一个很好的textChanged信号可以使用。