Russian Qt Forum

Qt => Общие вопросы => Тема начата: izoomer от Май 24, 2007, 22:53



Название: [qt-4.2.0] QDialog - слоты и методы
Отправлено: izoomer от Май 24, 2007, 22:53
Потребовалось создать свой диалог копирвоания файла с прогресс баром. Так вот создал класс от QDialog в конструткоре рисую прогрессбар и QLabel с именем копируемого файла. Есть метод copy в нем идет копирование в цикле while всех файлов из папки ... в этом цикле соответсвенно делаю setText для  QLabel и setProgress для прогрессбара .. но ничего не выполняется ... то есть код
Код:

JCopyDialog * dlgCpy = new JCopyDialog(this);
dlgCpy->exec();
dlgCpy->copy("myFile.cpp");

то идет копирование, а потом только диалог появляется на экране ... если copy перед exec() рузультат тотже ... как так ?  ....


Название: [qt-4.2.0] QDialog - слоты и методы
Отправлено: SABROG от Май 24, 2007, 22:57
Код:

qApp->processEvents();

?


Название: [qt-4.2.0] QDialog - слоты и методы
Отправлено: Вячеслав от Май 24, 2007, 23:11
это в смысле сунуть в цикл после setText\ setProgress ......
Хотя мне больше нравиться отделять мух от апельсинов - отрисовка отдельно - копирование отдельно .....


Название: [qt-4.2.0] QDialog - слоты и методы
Отправлено: SABROG от Май 25, 2007, 08:28
А тебе точно нужен свой диалог с прогрессбаром или можно использовать QProgressDialog ? Если мухи не нравятся, тогда используй QThread, но это чуть сложнее.


Название: [qt-4.2.0] QDialog - слоты и методы
Отправлено: izoomer от Май 25, 2007, 13:59
Цитата: "SABROG"
А тебе точно нужен свой диалог с прогрессбаром или можно использовать QProgressDialog ?

у меня свой внешний вид всего приложения ... свои прорисовки всех элементов .... потому свой и делаю
Цитировать

Если мухи не нравятся, тогда используй QThread, но это чуть сложнее.

хотел использовать , дане понял алгоритм данного механизма применительно к моей задаче - диалог копирования и само копирование ... может подскажет кто , как прально сделать ?

добавлено спустя 6 минут:

 
Цитата: "Вячеслав"
это в смысле сунуть в цикл после setText\ setProgress ......
Хотя мне больше нравиться отделять мух от апельсинов - отрисовка отдельно - копирование отдельно .....

всунул и ничего не выходит ... выходит только если сделать мой диалог не от  QDialog а от QWidget .... а так если делать copy после exec то естественно все ждет ожидания работы диалога ... а если сopy перед exec то естественно идет копировнеи все , а потом показывается диалог .... как сделать то ?


Название: [qt-4.2.0] QDialog - слоты и методы
Отправлено: SABROG от Май 25, 2007, 16:23
Цитата: "izoomer"
дане понял алгоритм данного механизма применительно к моей задаче - диалог копирования и само копирование ... может подскажет кто , как прально сделать ?


В отдельном потоке копируешь файлов, в главном окне показываешь свой прогрессбар и меняешь состояние в зависимости от данных переданных из QThread. Сигнальчик можно свой повесить в QThread, который будет принимать твой диалог в основном потоке.


Название: [qt-4.2.0] QDialog - слоты и методы
Отправлено: izoomer от Май 25, 2007, 19:23
Цитата: "SABROG"
Цитата: "izoomer"
дане понял алгоритм данного механизма применительно к моей задаче - диалог копирования и само копирование ... может подскажет кто , как прально сделать ?


В отдельном потоке копируешь файлов, в главном окне показываешь свой прогрессбар и меняешь состояние в зависимости от данных переданных из QThread. Сигнальчик можно свой повесить в QThread, который будет принимать твой диалог в основном потоке.

именно так сделал ивсе получилось - спасибо всем.