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

标签 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();
}

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

最佳答案

您可以使用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 信号,您可以使用。

关于c++ - Qt:如何自动调整QTextEdit对象的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44145326/

相关文章:

c++ - 在 C++ 中使用连接键而不是嵌套 Map 容器的优点和缺点

mysql - 使用 MySQL 问题的 Qt 静态构建

c++ - 如何使Qt Designer自定义QOpenGLWidget小部件背景透明?

macos - Qt macdeployqt - 使用后崩溃

c++ - Os X Yosemite Qt 拖放文件名错误

c++ - 将 QML 信号连接到 C++11 lambda 插槽 (Qt 5)

c++ - 什么时候使用 reinterpret_cast 而不违反严格的别名规则?

c++ - PhysFS 可以使用 ifstreams 吗?

C++ OpenGL glCreateProgram 在 Windows 上返回 0

c++ - 对于 MySQLDump,添加一条注释,输出每个表转储的行数