0

から継承する独自のウィジェットMyToolButtonがありQToolButtonます。paintEventで、元のから「背景」だけを描画したいQToolButton。つまり、スタイル(クリック、ホバーなど)のみを描画する必要がありますが、テキストや画像は必要ありません。私が自分で描きたいこれらのもの(カスタムフォーマットなど)。私が電話するとQToolButton::paintEvent(ev)、すべてが描かれています。画像とテキストをペイントから除外するにはどうすればよいですか?を使うべきだと思いますdrawControl()が、drawPrimitive()これらdrawComplexControl()すべての状態を理解することはできません

4

1 に答える 1

2

のソースコードvoid QToolButton::paintEvent(QPaintEvent *)は次のとおりです。

QStylePainter p(this);
QStyleOptionToolButton opt;
initStyleOption(&opt);
p.drawComplexControl(QStyle::CC_ToolButton, opt);

QStylePainter::drawComplexControlQStyle::drawComplexControl、純粋仮想関数であり、その実装は使用しているスタイルによって異なります。必要なのは、具体的な実装のソースコード(QWindowsXPStyleまたはなど)に移動し、実装をQGtkStyle見つけて、で使用することです。のような単純なコントロールの場合、スタイルに依存せずに図面を簡単に書き直すことができます。再描画はもう少し難しい作業になります。のソースコードを使用することをお勧めします。drawComplexControl()paintEventQPushButtonQToolButtonQCommonStyle

于 2013-03-26T19:55:56.447 に答える