0
自分のアプリケーションのニーズに合わせて自分で実装したQGraphicsView.drawItems()
を作成しました。このようなメソッドはうまく動作しますが、再描画する必要がない場合でも繰り返し呼び出されます。これにより、アプリケーションはプロセッサ使用率を最大限に引き出します。
何とか図面が完成したことを伝える必要がありますか?私はgitツリーのソースを読んで、そのようなことはやっていない。
アプリは、Python/PyQtはであり、そして私のドロー法は、次のようになります。Qt GraphicsSceneは常に再描画します
def drawItems(self, painter, items, options):
markupColors={'manual':QColor(0, 0, 255),
'automatic':QColor(255, 0, 0),
'user':QColor(0, 255, 0)}
for index in xrange(len(items)):
item=items[index]
option=options[index]
dataAsInt, dataIsInt=item.data(self.DRAWABLE_INDEX).toInt()
drawable=None
if dataIsInt:
drawable=self.drawables[dataAsInt]
item.setPen(markupColors[drawable.source])
item.paint(painter, option, None)
ビューの方法は、このように、「モンキー・パッチング」によって上書きされます。
self.ui.imageArea.drawItems=self.drawer.drawItems
上記メソッドは最後のステートメントのself.drawer.drawItemsです。
これはなぜ起こりますか?
ああ、優秀です。ありがとうございました! 代わりに 'painter.setPen'に変更しましたが、色は変わりませんか?代わりにペンを一度セットしなければならないでしょう。 – carlpett