У меня проблемы с производительностью программы, которую я создаю с помощью Qt. Проблема связана с большим количеством растровых изображений, которые я обновляю каждые 16 мс; для их обновления требуется около 300 мс. Я не доволен этим, но большая проблема заключается в задержке, которую это создает в остальной части пользовательского интерфейса. Я хотел бы иметь возможность снизить приоритет обновлений, чтобы огромное количество paintEvents не блокировало цикл событий для остальной части пользовательского интерфейса, но у меня возникают трудности. Поскольку update()
и 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
Вот источник моих проблем, массив из 240 QLabels
, которые я обновляю сразу каждые 16 мс:
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 (Моя программа - это окно слева):
QLabel
s... Может быть, вы должны показать нам, зачем вам нужны все этиQLabels
? - person cmannett85   schedule 22.05.2015