我有一个标签,它有时包含一个没有空格的长文本(计算机中的路径)。
所以wrod包装非常奇怪。
有没有办法让标签的自动换行在单词的中间或不仅仅在空白处打破?
答案 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)