Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Senia_Bezrubashkin от Сентябрь 19, 2013, 01:21



Название: странное поведение QProgressBar
Отправлено: Senia_Bezrubashkin от Сентябрь 19, 2013, 01:21
Кликаю по директории появляется прогрессбар, отрабатывает нормально (прогрессбар по окончании операции исчезает). Если кликнуть еще раз до того как отработает первый появляется второй прогрессбар... ну, и т. д. вот только они уже не исчезают. Что не так делаю?
Заранее спасибо.

Код:
void Widget::slotFind(const QModelIndex &index)
{
    pb = new QProgressBar(spl_2);
    pb->setRange(0, 0);
    start(QDir(model->filePath(index))); // рекурсивный метод
    pb->setVisible(false);
}


Название: Re: странное поведение QProgressBar
Отправлено: kambala от Сентябрь 19, 2013, 02:27
исчезать будет только самый верхний потому что в последней строчке метода pb уже указывает на новый прогрессбар, а старый потерялся.

либо добавляй новый прогрессбар под текущим либо не разрешай жать на кнопку пока текущая операция не закончится.


Название: Re: странное поведение QProgressBar
Отправлено: Senia_Bezrubashkin от Сентябрь 19, 2013, 09:37
Понятно... и еще один вопрос. Метод start() проходится по файловой системе от кликнутой директории. Является ли такое действие операцией с неопределенным временем выполнения или я ошибаюсь (ну, чтобы процентики в прогрессбаре отобразить)? Объем по которому метод пройдется на компе физически присутствует и значит его заранее можно определить, но так наверное делать не стоит. В общем проясните пожалуйста ситуацию кто знает.


Название: Re: странное поведение QProgressBar
Отправлено: kambala от Сентябрь 19, 2013, 11:17
неопределенное время. для подсчета суммарного размера тебе (или системе) придется точно так же опрашивать каждый файл.