qt - QLabel 自动换行模式

标签 qt label word-wrap

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

所以 word-wrap 把它包装得很奇怪。

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

最佳答案

这并不优雅,但确实有效......
所以说头类有私有(private):

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 字符串是实际路径。如果您尝试使用空间注入(inject)路径打开文件,Qt 程序将崩溃.....

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

关于qt - QLabel 自动换行模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12262123/

相关文章:

html - 调整 HTML 表单中标签元素的行高

html - 无法强制文本换行

python - 使用带字节数的 textwrap.wrap

未强制 WPF 网格列 MaxWidth

c++ - Qt串口读取字符串不好

c++ - 对 'cv::viz::Viz3d::Viz3d(std::string&const)' 的 undefined reference

python - 在 QDialog reject() 上优雅地终止 QThread

python - 我如何在 pyqt4 的 Qt Designer 中使用 promote to?

java - 我的标签设置了任何文本,但我在屏幕上看不到它,但可以从控制台看到它

c++ - 通过 ifdef 以编程方式确定标签是否在翻译单元中定义