Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Anton от Декабрь 11, 2005, 22:28



Название: QProgressBar работает медленно, или мне показалось
Отправлено: Anton от Декабрь 11, 2005, 22:28
Даже если пустой цикл прогонять в несколько тысяч итераций и выставлять обновление, то это занимает достаточно продолжительное время


Название: QProgressBar работает медленно, или мне показалось
Отправлено: Gop-Stop от Декабрь 11, 2005, 23:23
Так и есть. Используй прогресс с 100 (если интераций 1000 то в прогресс добавляй 1 после каждой 10-й итреции)


Название: QProgressBar работает медленно, или мне показалось
Отправлено: Dendy от Декабрь 12, 2005, 14:12
Код:
void QProgressBar::setValue(int value)
{
    Q_D(QProgressBar);
    if (d->value == value || ((value > d->maximum || value < d->minimum)
                && (d->maximum != 0 || d->minimum != 0)))
        return;
    d->value = value;
    emit valueChanged(value);
#ifndef QT_NO_ACCESSIBILITY
    QAccessible::updateAccessibility(this, 0, QAccessible::ValueChanged);
#endif
    if (d->repaintRequired())
        repaint();
}


Дуже тяжка функція для виклику з нескінченного циклу :(  Краще робити setValue() через кілька ітерацій. Потрібно викликати між дійсно тяжкими операціями, набагато тяжче за setValue().
repaint() я взагалі не зрозумів :(  Може повинно бути update()?


Название: Re: QProgressBar работает медленно, или мне показалось
Отправлено: Артем от Декабрь 14, 2005, 00:53
Цитата: "Anton"
Даже если пустой цикл прогонять в несколько тысяч итераций и выставлять обновление, то это занимает достаточно продолжительное время

Наткнулся на ту же проблему в QT4. setValue() тормозит жутко. Пока не решил( В некоторых случаях setValue() вобще не работает.
Если решение уже найдено (кроме уже предложенного) напиши пожалуйста.