Russian Qt Forum
Ноябрь 23, 2024, 10:40 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Очень медленный QComboBox::clear()  (Прочитано 4029 раз)
RomiX
Гость
« : Июль 08, 2012, 17:23 »

Здравстуйте, пишу удобный просмотрщик для логов, с сортировкой по разным параметрам, фильтровкой и т.д. Для фильтрования данных использую QComboBox, в который после загрузки лог файла, заносятся имена функций, и затем можно фильтровать лог по этим именам. Но проблема в том что при большом файле (около 100,000 строк), уже после загрузки файла, функция clear() выполняеться очень долго (дольше загрузки самого файла, секунд 10-20), при этом в самом комбо боксе всего с десяток записей. Не подскажите в чем может быть проблема?
Записан
mutineer
Гость
« Ответ #1 : Июль 08, 2012, 18:06 »

Скорее всего проблема в коде, который нам не виден
Записан
RomiX
Гость
« Ответ #2 : Июль 08, 2012, 19:08 »

Код:
    ui->moduleBox->clear(); // QComboBox::clear() выполняеться очень долго
    ui->moduleBox->addItem(tr("All"), -1);
    QHash<QString, int> hash = treeModel->getModuleNumbers();
    QHashIterator<QString, int> it(hash);
    while(it.hasNext()) {
        it.next();

        ui->moduleBox->addItem(it.key(), it.value());
    }

    ui->functionBox->clear();
    ui->functionBox->addItem(tr("All"), -1);
    hash = treeModel->getFunctionNumbers();
    QHashIterator<QString, int> it2(hash);
    while(it2.hasNext()) {
        it2.next();

        ui->functionBox->addItem(it2.key(), it2.value());
    }

« Последнее редактирование: Июль 08, 2012, 19:46 от RomiX » Записан
RomiX
Гость
« Ответ #3 : Июль 08, 2012, 20:19 »

вообще не могу понять зависимости(( если загружать большой файл прямо из кода (а не через диалог выбора файла) то все ок. при чем самое интересное то, что не зависимо от размера файла, в QComboBox заноситься не много данных, и сам QComboBox вообще никак не связан с его загрузкой.
Записан
DmitryM
Гость
« Ответ #4 : Июль 08, 2012, 20:30 »

Запусти профилировщик. 
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #5 : Август 08, 2012, 10:11 »

думаю, стоит заблокировать сигналы QComboBox до начала операций с ним. После загрузки разблокировать.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.14 секунд. Запросов: 22.