Я пытаюсь реализовать средство просмотра документов/изображений с помощью qscrollarea. Я обнаружил, что qscrollarea работает медленно при загрузке файлов со многими страницами. Для документа, содержащего около 1,3 тыс. Страниц, для завершения загрузки потребовалось около полуминут.Как улучшить производительность qscrollarea с большим количеством изображений?
Основная процедура загрузки, как это:
for (int i = 0; i < DOC_COUNT; ++i) {
QLabel *label = new QLabel();
label->setPixmap(IMAGE);
qvboxlayout_->addWidget(label);
QCoreApplication::processEvents();
}
Я знаю андроида есть механизм, который автоматически раздувает систему, перерабатывает и повторно использует представления. Имеет ли qt такой механизм?
Ваша проблема заключается в загрузке всех этих изображений загодя. Не делай этого. Загружайте их по требованию. Вам нужно будет немного настроить QLabel для достижения этого или создать собственный виджет. –
@KubaOber Итак, как «загрузить их по требованию»? Можете ли вы показать мне некоторые подсказки? – Lion
Вы можете выполнить загрузку после того, как первая метка должна сама по себе нарисовать: отслеживать, когда метка получает событие перерисовки, а затем загружать и устанавливать на ней изображение. Однако вам нужно знать размеры каждого изображения априори, чтобы метки имели правильные размеры, но без содержимого. –