2017-08-10 8 views
0

複雑なリッチテキストのQLabelコンテンツをpixmapにレンダリングしたいので、すべてのフレームでQLabelをレンダリングするよりもはるかにスムーズにそのピックスマップをアニメーション化できます。レンダリングされたQLabelのサイズを計算する

pixmapを作成するサイズを知る方法を教えてください。 QLabelに、コンテンツをレンダリングするのに必要な境界線の長さ(親レイアウトによって制限されていないもの)を尋ねる方法はありますか?

QLabel :: fontMetricsを試しましたが、もちろんリッチテキストコンテンツでは機能しません。私が使うことができるものは他にありますか?

答えて

0

QLabel :: adjustSize()を呼び出してQLabel :: size()を取得するのが一般的です。

ただし、QLabelに親がない場合(つまり、トップレベルのウィジェットと見なされる場合)、Qtはウィジェットのサイズを画面サイズの2/3に制限します。私はこの問題を克服しようとしていました.QLabelが常に1280ピクセル(1920x1080画面)にクリップされた理由を理解できませんでした。

しかし、sizeHint()は常にラベルの正しいサイズを返していました。最後に

は、私がやった:

label->adjustSize(); 
label->resize(label->sizeHint()); 

QPixmap pixmap(label->size()); 
label->render(&pixmap); 

これは、ラベルのサイズを変更すると、それはまだクリッピングされる可能性があるため、単にラベルのsizehintが()にピックスマップを設定していないことが重要です。

0

QPixmap::grabWidget(label)を使用するだけでこれを達成できるはずです。サイズは必要ありません。詳細については、ドキュメントを参照してください。

関連する問題