2017-11-28 2 views
0

私たちは、塗りつぶしの手順が、オーバーライドされたpaintEventメソッドで行われなければならない規則にしばしば従わない、大きなQTプロジェクトを持っています。結果として我々はそれについての警告を持っている:画家はアクティブではないなど...しかし、すべてうまく動作し、一目見て私は何の問題も見ません。私はそれについて心配する必要がありますか?この機能の不正使用の価格はいくらですか?QPaintEventハンドラの外部に描画

+0

もっと具体的になりますか。私は画家が 'paintEvent'関数の外で使うことができると信じているので、"画家はアクティブではありません "というメッセージは何か他のものによって引き起こされる可能性があります。 – vahancho

+0

同意できません。簡単な例。 QPainter :: setFontメソッドを見ると、この場合、必要なフォントは設定されないことがわかります。 if(!d-> engine){ qWarning( "QPainter :: setFont:Painter not active"); リターン; } – Mikola

+0

まあ、それはどのように 'paintEvent'関数に関連していますか? – vahancho

答えて

0

ペイントイベントは、たとえば表示されているときなど、更新が必要なときにウィンドウに送信されます。たとえば、ウィジェットが別のウィンドウで覆われていて、このウィンドウが離れている場合は、ウィジェットを更新する必要があります。一般的な方法は、ピックスマップにペイントし、このピクスマップをペイントイベントハンドラのウィジェットに描画することです。または、それを再描画する必要があるたびに、更新/再描画を行うことができます。

必要に応じてpixmap、printerなどで描画するのにQPainterを使うことができますが、paintEventで描画する必要がある場合はwindgetを描画します。

+0

私の状況だそうです。後でウィジェットを描画するためのピックスマップを用意します。 – Mikola

+0

@Mikolaこの場合、警告を受け取るべきではありません。 pixmapの代わりにウィジェットでペイントしようとする場所をもう一度確認してください。 – Jeka

+0

はい、それは私を混乱させます - 私はそのような警告を持っています....私は調査します。しかし、どのような場合でも、対応する機能を使用して間違っていると(ブラシ、フォント、ペンなど)機能しないという結論を出すことができますか? – Mikola

0

私は間違いを発見しました。無効なpixmap(サイズ0x0のpixmapを作成しました)が使用されたときに間違いが見つかりました。私はそれにチェックを追加して、すべて今okeyです。

関連する問題