スペースのない長いテキスト (コンピューター内のパス) を含むラベルがあります。
したがって、ワードラップは非常に奇妙にラップします。
空白だけでなく、単語の途中でラベルの単語の折り返しを区切る方法はありますか?
これはエレガントではありませんが、機能します...
つまり、ヘッダークラスにプライベートがあるとします:
QLabel *thisLabel;
QString *pathName;
QString *pathNameClean;
もちろん、thisLabel をどこかで定義します。こんなにシンプルだったらいいのに……。
thisLabel->setWordWrap(true);
それは問題ありません単語にブレークポイントがある場合のみ(パスは避けるべきです)
SO 後で 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 つの方法は、QLabel の代わりに QTextDocument で QTextOption クラスを使用することです。これにより、QTextOption::WrapModeを使用できます。あなたがしたいことをするべきです。QTextOption::WrapAtWordBoundaryOrAnywhere