QLabel自动换行模式

sar*_*ara 10 qt label word-wrap

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

所以wrod包装非常奇怪.

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

Luc*_*lon 6

一种方法是将QTextOption类与QTextDocument而不是 QLabel 一起使用。这让您可以使用QTextOption::WrapModeQTextOption::WrapAtWordBoundaryOrAnywhere应该做你想做的。

  • 因此,答案似乎满足了要求,我猜这使它完全可以接受。如果您有更好的解决方案,请回答自己。它可能对未来的观众有用。 (3认同)
  • 这是不可接受的,因为 QTextEdit/QTextBrowser 不适合内容。 (2认同)

bud*_*dda 5

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

QLabel *thisLabel;
QString *pathName;
QString *pathNameClean;
Run Code Online (Sandbox Code Playgroud)

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

thisLabel->setWordWrap(true);
Run Code Online (Sandbox Code Playgroud)

这是好的,如果这个词有断点(哪个路径应该避免)

如果您以后需要用于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);
Run Code Online (Sandbox Code Playgroud)

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

只记得pathName字符串现在只是用于漂亮的QLabel目的,而pathNameClean字符串是实际路径.如果你试图打开一个空格注入路径的文件,Qt程序将崩溃.....

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