Russian Qt Forum

Qt => Model-View (MV) => Тема начата: RomiX от Июль 08, 2012, 17:23



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


Название: Re: Очень медленный QComboBox::clear()
Отправлено: mutineer от Июль 08, 2012, 18:06
Скорее всего проблема в коде, который нам не виден


Название: Re: Очень медленный QComboBox::clear()
Отправлено: RomiX от Июль 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());
    }



Название: Re: Очень медленный QComboBox::clear()
Отправлено: RomiX от Июль 08, 2012, 20:19
вообще не могу понять зависимости(( если загружать большой файл прямо из кода (а не через диалог выбора файла) то все ок. при чем самое интересное то, что не зависимо от размера файла, в QComboBox заноситься не много данных, и сам QComboBox вообще никак не связан с его загрузкой.


Название: Re: Очень медленный QComboBox::clear()
Отправлено: DmitryM от Июль 08, 2012, 20:30
Запусти профилировщик. 


Название: Re: Очень медленный QComboBox::clear()
Отправлено: Racheengel от Август 08, 2012, 10:11
думаю, стоит заблокировать сигналы QComboBox до начала операций с ним. После загрузки разблокировать.