Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: подсчитать примерное время
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
void*
есть ли в Qt классы для того чтобы примерно подсчитать время выполнения какой-либо операции? т.е. допустим выполняется какая-то операция и нужно на прогрессбар посылать значение в процентах о выполнении...
слышал что-то насчет классов QFuture* - они этим занимаются? может кто-то уже работал с этими классами и может объяснить как их использовать?

П.С. в моем случае мне нужно как-то "мониторить" выполнение цикла, в котором выполняется слот n-ное кол-во раз
Litkevich Yuriy
Цитата(void* @ 7.2.2009, 4:22) *
слышал что-то насчет классов QFuture* - они этим занимаются?
это из области параллельной работы.

Цитата(void* @ 7.2.2009, 4:22) *
есть ли в Qt классы для того чтобы примерно подсчитать время выполнения какой-либо операции?
считать только ручками, писал еще здесь
kwisp
void*,
посомтри QTime::start()
может поможет
void*
нет, я имел ввиду парралельно с выполнением операции показывать прогресс ее выполнения, поэтому таймеры тут не катят

кстати QFutureWatcher вроде бы это может, но я так и не понял как вызвать нужную мне функцию, параметром которой является QString, для каждого элемента QStringList
пробовал так(почти как в примере):
пример
QProgressDialog dialog;
dialog.setLabelText(tr("Analyzing files..."));
QFutureWatcher<void> futureWatcher;
connect(&futureWatcher, SIGNAL(finished()), &dialog, SLOT(reset()));
connect(&futureWatcher, SIGNAL(progressRangeChanged(int, int)), &dialog, SLOT(setRange(int, int)));
connect(&futureWatcher, SIGNAL(progressValueChanged(int)), &dialog, SLOT(setValue(int)));
futureWatcher.setFuture(QtConcurrent::map(filenames.toVector(), slotOpenFile));
dialog.exec();
futureWatcher.waitForFinished();
qDebug() << "Canceled - " << futureWatcher.future().isCanceled();

но ругается на строчку futureWatcher.setFuture(QtConcurrent::map(filenames.toVector(), slotOpenFile));
видимо что-то с параметрами напутал, но не могу найти нигде описания типов параметров функции QtConcurrent::map()
Litkevich Yuriy
я такой диалог делал на с помощью QProgressDialog, без каких-либо дополнительных штуковин
  QProgressDialog progress(tr("Чтение данных"), "", 0, 4, this);
    progress.setWindowModality(Qt::WindowModal);
    progress.setMinimumDuration(0);
    progress.setValue(1);
    
    <...>
    progress.setValue(2);
    <...>
    progress.setValue(3);
    <...>
    progress.setValue(4);
void*
Litkevich Yuriy, так я тоже пробовал, но у меня не получается вовремя нормально отобразить диалог, он появляется но в нем ничего нет, где я туплю?
как я делаю
QProgressDialog dialog;
dialog.setLabelText(tr("Analyzing files..."));
dialog.setRange(0, 100);
dialog.show();
for(int i=0; i!=filenames.size(); ++i) {
    dialog.setLabelText(tr("Analyzing file ") + filenames[i] + "...");
    slotOpenFile(filenames[i]);
    dialog.setValue((100/filenames.size())*(i+1));
}
dialog.reset();


П.С. filenames - QStringList, кол-во элементов заранее неизвестно
void*
все, разобрался, оказывается при вызове setValue() диалог сам показывается, а я думал его нужно вручную показывать
результат
QProgressDialog dialog;
dialog.setLabelText(tr("Analyzing files..."));
dialog.setRange(0, 100);
dialog.setWindowModality(Qt::WindowModal);
for(int i=0; i!=filenames.size(); ++i) {
    dialog.setLabelText(tr("Analyzing file ") + filenames[i] + "...");
    slotOpenFile(filenames[i]);
    dialog.setValue((100/filenames.size())*(i+1));
}
dialog.setValue(100);
Litkevich Yuriy
Цитата(void* @ 8.2.2009, 15:19) *
оказывается при вызове setValue() диалог сам показывается,
ага, я два часа немог понять в чем дело, когда пример из асистента скопировал тогда понял. Поэтому у меня сразу устанавливается значение в еденичку.

Но я нашел касяк странный:
как видно из моего примера, я устанавливаю собственный текст, и удаляю текст на кнопке (чтоб пользователя не повожать, т.к. пока нет обработчика прерывания процесса). Дак вот на трех тачках все как я задумал, а на ноуте (ВинХП СП3) диалог показывается стандартный!!!!

Откуда там не моя надпись в диалоге и на кнопке, да еще по аглицки?????????

У мнея ни одной догадки нет
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.