crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в подсчитать примерное время
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 8.2.2009, 12:45
 
Цитата(void* @ 8.2.2009, 15:19) *
оказывается при вызове setValue() диалог сам показывается,
ага, я два часа немог понять в чем дело, когда пример из асистента скопировал тогда понял. Поэтому у меня сразу устанавливается значение в еденичку.

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

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

У мнея ни одной догадки нет
void* Дата 8.2.2009, 12:19
  все, разобрался, оказывается при вызове 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);
void* Дата 8.2.2009, 11:31
  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, кол-во элементов заранее неизвестно
Litkevich Yuriy Дата 8.2.2009, 1:46
  я такой диалог делал на с помощью 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* Дата 8.2.2009, 1:27
  нет, я имел ввиду парралельно с выполнением операции показывать прогресс ее выполнения, поэтому таймеры тут не катят

кстати 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()
kwisp Дата 7.2.2009, 17:00
  void*,
посомтри QTime::start()
может поможет
Litkevich Yuriy Дата 7.2.2009, 1:31
 
Цитата(void* @ 7.2.2009, 4:22) *
слышал что-то насчет классов QFuture* - они этим занимаются?
это из области параллельной работы.

Цитата(void* @ 7.2.2009, 4:22) *
есть ли в Qt классы для того чтобы примерно подсчитать время выполнения какой-либо операции?
считать только ручками, писал еще здесь
void* Дата 7.2.2009, 1:22
  есть ли в Qt классы для того чтобы примерно подсчитать время выполнения какой-либо операции? т.е. допустим выполняется какая-то операция и нужно на прогрессбар посылать значение в процентах о выполнении...
слышал что-то насчет классов QFuture* - они этим занимаются? может кто-то уже работал с этими классами и может объяснить как их использовать?

П.С. в моем случае мне нужно как-то "мониторить" выполнение цикла, в котором выполняется слот n-ное кол-во раз
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 12:48