Russian Qt Forum
Мая 08, 2025, 04:19 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Очень медленный QComboBox::clear()  (Прочитано 4142 раз)
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.036 секунд. Запросов: 23.