2012-09-04 50 views
8

私はラベルにスペースがない長いテキスト(コンピュータのパス)を含むことがあります。QLabelワードラップモード

だからwrodラップは非常に奇妙なラップです。

空白部分だけでなく、単語の途中で改行するラベルを改行する方法はありますか?

答えて

4

QLabelの代わりにQTextDocumentを使用してQTextOptionクラスを使用することもできます。これによりQTextOption::WrapModeを使用できます。 QTextOption :: WrapAtWordBoundaryOrAnywhereはあなたが望むことをする必要があります。

+1

QTextEdit/QTextBrowserはコンテンツに適合しないため、これは受け入れられません。 – chacham15

+0

コンテンツに合わせる?私はそのような要求をその質問には見ません。 –

+0

あなたはそうですが、これはQLabelのデフォルトの動作であり、QTextEditでは動作しません。さらに、QTextEditを作るのは簡単ではありません。 – chacham15

5

これはエレガントではなく、仕事をする...
だから、ヘッダクラスはプライベート持って言う:

QLabel *thisLabel; 
QString *pathName; 
QString *pathNameClean; 

もちろんthisLabelいくつかの場所を定義します。 それはこの単純だった場合それはいいだろう....

thisLabel->setWordWrap(true); 

IF罰金だと単語が(パスは避けなければならない)ポイント

を壊している場合にのみ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); 

ジャーン....シミュレートされたワードラップ元のスペースがありません...

これは単にpathName文字列がかなりQLabel目的であり、pathNameClean文字列が実際のパスであることを覚えておいてください。スペースを挿入したファイルを開こうとすると、Qtプログラムがクラッシュする.....

(単純なクラスメソッドがない場合は、コードのほんの数行しかない可能性があります... なぜ問題解決

関連する問題