Название: Быстрая загрузка в виджет. Отправлено: Kalombo от Май 20, 2008, 07:50 Мне нужно загрузить в какой-нибудь виджет (вообще, без разницы какой, я пробовал QListView и QListWidget) около 20 тысяч строк. Если никаких мер не предпринимать, то программ висит секунд 20 во воремя добавления этих строк. Пробовал вставить QApplication::processEvents(), время добавления увеличилось в разы(2 минуты ждал). Пробовал создать отдельным потоком, как-то странно получилось, приложение все равно начинало виснуть при добавлении. В идеале хочется, конечно, быстрого добавления слов, но если уж не получится, то скажите как оставить пользователю реакцию на сообщения, но только во время этих же 20 секунд, а не как у меня получилось больше 2х минут.
Название: Re: Быстрая загрузка в виджет. Отправлено: lit-uriy от Май 20, 2008, 08:45 может, когда ты используешь QApplication::processEvents() имеет смысл вставку гигантскую обрамить с помощью setUpdatesEnabled(false); и setUpdatesEnabled(true); ?
Название: Re: Быстрая загрузка в виджет. Отправлено: BRE от Май 20, 2008, 09:03 Для таких случаев, сам Бог велел, использовать модели. ;)
Название: Re: Быстрая загрузка в виджет. Отправлено: ритт от Май 20, 2008, 10:39 листвиджет заменить на листвью со своей моделью
в моделях ещё есть такая ерундовина "фетчМоре" (или как-то так) плюс отдельный поток можно заставить эту модель заливать...а вьюху обновлять "пачками" зы. будет интересно послушать как решил проблему (когда/если решишь) Название: Re: Быстрая загрузка в виджет. Отправлено: sikuda от Май 29, 2008, 15:45 Если у тебя есть для этотго виджета обработка сигналов - их надо на время заполнения списка отрубить.
Типа так: disconnect(this, SIGNAL(itemChanged(QTreeWidgetItem *, int)), this, SLOT(updateCatalogItem(QTreeWidgetItem *, int))); createItems(idroot, this, NULL); connect(this, SIGNAL(itemChanged(QTreeWidgetItem *, int)), this, SLOT(updateCatalogItem(QTreeWidgetItem *, int))); Qt 4.3.4 Название: Re: Быстрая загрузка в виджет. Отправлено: pastor от Май 29, 2008, 16:30 + отключить сортировку
Название: Re: Быстрая загрузка в виджет. Отправлено: lit-uriy от Май 29, 2008, 17:47 я думаю сигналы надо не отключать/подключать, а просто блокировать/разблокировать (см. bool QObject::blockSignals ( bool block ) )
|