2011-07-08 9 views
1

私はQStyleを書きました。ここでは、QProgressBarをスリムなシングルライン、テキストなしに変更しています。だから高さも5pxに落とされます。ただし、ウィジェットの幅はレイアウトによって決まります。ウィジェットの高さを変更するには、私のスタイルのdrawControlで何をすべきですか?ウィジェットのサイズをQStyleから変更する

+1

レイアウトが何であっても、幅を5ピクセルに制限するsetMaximumWidth(5pixels)とsetMinimumWidth(5pixels)を呼び出す方がはるかに簡単だと思います。 –

答えて

1

私はQStyleを実際に書いたことはありませんが、drawControlの中で何かをリサイズすることになっていたら奇妙だと思います。私はこれについて間違っているかもしれません。ドキュメントの簡単な見直しは、subElementRectをオーバーライドし、現在の幅とあなたの好みの高さに基づいてrectを返すことを示唆しているようです。これはレイアウト活動によって呼び出され、drawControlが呼び出されるまでにソートされると仮定します。

+0

私は3つすべてのProgressBarに関連するサブ要素Case 'SE_ProgressBarGroove'、' SE_ProgressBarContents'、 'SE_ProgressBarLabel'を試しました。高さ5pxで同じ幅のrectを返しています。どちらがうまくいかない。変わらないそれはまだ同じです。 –

+0

申し訳ありませんが、うまくいきませんでした。うまくいけば、より多くの提案が表示されます。 –

+0

したがって、進行状況バーウィジェットで最大高さ5を設定すると機能しません。 –

1

ウィジェットの高さを固定する必要がありますか?または、描画された高さが5ピクセルを超えないようにするには?最初に、高さをに設定し、ポリッシュ機能でポリシーをサイズ変更します。 2番目の場合は、QStyleで図面を上書きして5ピクセルのみを使用します。描画を行う関数は一般的には矩形を取る。適切な関数を適切にオーバーライドすると、基本クラスの描画を変更された矩形で呼び出すことができます。残念ながら、私はQStyleの仕事をしてから何年も経っていますので、その機能が何であるか正確にはわかりません。

関連する問題