16

スペースのない長いテキスト (コンピューター内のパス) を含むラベルがあります。

したがって、ワードラップは非常に奇妙にラップします。

空白だけでなく、単語の途中でラベルの単語の折り返しを区切る方法はありますか?

4

4 に答える 4

7

これはエレガントではありませんが、機能します...
つまり、ヘッダークラ​​スにプライベートがあるとします:

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 プログラムがクラッシュします.....

(単純なクラス メソッドがない場合は、数行のコードを実行するだけで済みます...そして、なぜ問題解決がプログラマーにとって最良のツールなのか!)

于 2013-03-06T13:08:53.607 に答える
6

1 つの方法は、QLabel の代わりに QTextDocument で QTextOption クラスを使用することです。これにより、QTextOption::WrapModeを使用できます。あなたがしたいことをするべきです。QTextOption::WrapAtWordBoundaryOrAnywhere

于 2012-09-04T11:13:06.027 に答える