私はそれにいくつかのウィジェットを持つメインウィンドウを持っている、それぞれ独自のグラフィックが必要です。 QPainterを使用して、ボタン、ボタンなどの特定のイベントの後にのみ、形状、線などを描画したいと考えています。特定のイベントの後でQPainterを使用してペイントする方法はありますか?
問題は、私はちょうど任意の関数でQPainterのを作成する場合、それは動作しません、次のとおりです。
QPainter::setPen: Painter not active
QPainterの方法だけpaintEvent(QPaintEvent *)
関数内で呼び出すことができます!これは、次のような問題を提起:
私は私がペイントしたいすべてのウィジェットのための私のカスタムクラスを派生しなければならないので、私は私のウィジェットを配置するためにDesignerを使用することはできません。これは、多数のウィジェットでイライラすることがあります。
ウィンドウのペイントイベントごとにウィジェットが移動したり、ウィンドウの前にある他のウィンドウを移動したりするようにウィジェットが再描画されます。私はそれらのウィジェットで多くの描画を行います。そのため、これらのウィジェットでは目に見えるほど瞬きがあります。
これを解決する方法はありますか?私は、画像を表示し、特定のボタンが押されたときにのみそれらの画像を再製作することを考え始めました。私はそれが最もエレガントなソリューションだとは思わない...
QLidgetの代わりにQLabelを使用すると、派生したクラスを混乱させることなく、直接 'QLabel.setPixmap'を呼び出すことができます。 – vsz
これがカスタムウィジェットを必要とする唯一の理由なら、それはいい考えです – Mat