QLabel自动换行模式

时间:2012-09-04 11:00:15

标签: qt label word-wrap

我有一个标签,它有时包含一个没有空格的长文本(计算机中的路径)。

所以wrod包装非常奇怪。

有没有办法让标签的自动换行在单词的中间或不仅仅在空白处打破?

3 个答案:

答案 0 :(得分:5)

这不优雅但确实有效......
所以说标题类有私有:

QLabel *thisLabel;
QString *pathName;
QString *pathNameClean;

当然,定义thisLabel的地方。  所以如果这很简单就好了....

thisLabel->setWordWrap(true);

如果单词有断点,那就好了 (应该避免的路径)

如果您以后需要用于QFile目的,请将您的实际路径保存在单独的字符串中。 然后手动定义每个行号的字符,并将空格插入字符串.... 所以我们会说50个字符是一个很好的宽度...

    pathNameClean = new QString(pathName);

    int c = pathName->length();

    if( c > 50)
    {
        for(int i = 1; i <= c/50; i++)
        {
            int n = i * 50;
            pathName->insert(n, " ");
        }
    }
    thisLabel->setText(pathName);

Shazam ....没有原始空间的模拟WordWrap ......

请记住,pathName字符串现在仅用于QLabel,并且pathNameClean字符串是实际路径。如果您尝试打开带有空格注入路径的文件,Qt程序将崩溃.....

(如果没有简单的类方法,可能只需几行代码就可以了......    为什么问题解决是程序员最好的工具!)

答案 1 :(得分:4)

一种方法是使用QTextOption类和QTextDocument而不是QLabel。这允许您使用QTextOption::WrapMode。 QTextOption :: WrapAtWordBoundaryOrAnywhere应该做你想要的。

答案 2 :(得分:-1)

在2020年,PySide2就是:

 tmp = QLabel()
 tmp.setWordWrap(True)