sar*_*ara 10 qt label word-wrap
我有一个标签,它有时包含一个没有空格的长文本(计算机中的路径).
所以wrod包装非常奇怪.
有没有办法让标签的自动换行在单词的中间或不仅仅在空白处打破?
一种方法是将QTextOption类与QTextDocument而不是 QLabel 一起使用。这让您可以使用QTextOption::WrapMode。QTextOption::WrapAtWordBoundaryOrAnywhere应该做你想做的。
这不优雅,但确实有效...
所以说标题类有私有:
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程序将崩溃.....
(如果没有简单的类方法,那么可能只需几行代码......为什么解决问题是程序员最好的工具!)