Qt を使用して作成しているプログラムでパフォーマンスの問題が発生しています。この問題は、16 ミリ秒ごとに更新する多数のビットマップに起因します。それらをすべて更新するには、約 300 ミリ秒かかります。私はこれに満足していませんが、より大きな問題は、これが UI の残りの部分で作成する遅延です。膨大な数の paintEvents が残りの UI のイベント ループをブロックしないように、更新の優先順位を下げたいと思っていますが、問題があります。update()
and にrepaint()
は優先度パラメーターがないため、 を使用してみましQCoreApplication::postEvent()
たが、次のエラー メッセージが表示されるため、この方法で paintEvent を呼び出すことは許可されていないようです:
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::setOpacity: Painter not active
QPainter::setFont: Painter not active
QWidget::paintEngine: Should no longer be called
これが私の問題の原因ですQLabels
。16ミリ秒ごとに一度に更新する240の配列です。
if (ui->objectSlotTabs->currentIndex() == 1) {
for (int c = 0; c < 240; c++) {
QEvent* event = new QEvent(QEvent::Paint);
QCoreApplication::postEvent((*(ui->mArray))[c], event, -1);} }
編集:これは、プログラムが何をするか、およびQLabelsが非常に重要である理由の例の画像です(私のプログラムは左側のウィンドウです):