Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: alex-v от Сентябрь 27, 2010, 16:34



Название: QProgressBar тормозит
Отправлено: alex-v от Сентябрь 27, 2010, 16:34
даже в пустом коротком цикле - медленно бегут проценты...
Подскажите как это дело ускорить?


Название: Re: QProgressBar тормозит
Отправлено: crossly от Сентябрь 27, 2010, 16:36
что значит медленно ??:)


Название: Re: QProgressBar тормозит
Отправлено: GreatSnake от Сентябрь 27, 2010, 16:38
QCoreApplication::processEvents() не забыли вызвать после QProgressBar::setValue()?


Название: Re: QProgressBar тормозит
Отправлено: alex-v от Сентябрь 27, 2010, 17:24
QCoreApplication::processEvents() не забыли вызвать после QProgressBar::setValue()?
не забыл.
всёравно пустой цикл из 100 итераций - медленно происходит (т.к. должен мгновенно почти)


Название: Re: QProgressBar тормозит
Отправлено: Marat(Qt) от Сентябрь 27, 2010, 17:31
QCoreApplication::processEvents() не забыли вызвать после QProgressBar::setValue()?
не забыл.
всёравно пустой цикл из 100 итераций - медленно происходит (т.к. должен мгновенно почти)
С таким описанием проблемы вы вряд ли решите проблему. Нужны подробности, более четкое описание симптомов, исходники, позволяющие воспроизвести вашу проблему.


Название: Re: QProgressBar тормозит
Отправлено: navrocky от Сентябрь 27, 2010, 19:28
Обычно делают такие оптимизации:

- зовут на каждую N-ую итерацию:
Код
C++ (Qt)
if (i % 10) progress->setValue(i);
 

- или по времени:
Код
C++ (Qt)
QTime t;
t.start();
for (int i = 0; i < 10000; i++)
{
   if (t.elapsed() > 50)
   {
       t.start();
       progress->setValue(i);
   }
   some_work();
}
 


Название: Re: QProgressBar тормозит
Отправлено: alex-v от Сентябрь 27, 2010, 19:43
да, на счет подобной оптимизации тоже думал. Видимо надо что-то подобное реализовать...

только может так: ?
Код:
if (!(i % 10)) progress->setValue(i);


Название: Re: QProgressBar тормозит
Отправлено: Авварон от Сентябрь 27, 2010, 20:16
ну как бы processEvents достаточно медленная операция и вы тратите время впустую. Способы решения уже сказаны


Название: Re: QProgressBar тормозит
Отправлено: Marat(Qt) от Сентябрь 27, 2010, 20:26
да, на счет подобной оптимизации тоже думал. Видимо надо что-то подобное реализовать...

только может так: ?
Код:
if (!(i % 10)) progress->setValue(i);
Скорее так:
Код:
if (!(i % 10)) {progress->setValue(i);processEvents();}


Название: Re: QProgressBar тормозит
Отправлено: Igors от Сентябрь 27, 2010, 20:42
Скорее так:
Код:
if (!(i % 10)) {progress->setValue(i);processEvents();}
Для немодального progress - да. А модальный сам позовет processEvents


Название: Re: QProgressBar тормозит
Отправлено: navrocky от Сентябрь 27, 2010, 22:15
только может так: ?
Код:
if (!(i % 10)) progress->setValue(i);

Да, конечно, я сморозил :D