Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] Приостановить выполнение программы 
V
    Опции темы
dix75
Дата 12.7.2009, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 462
Регистрация: 17.7.2007

Репутация: 1
Всего: 1



Добрый вечер!

Как в Qt можно приостановить выполнение программы?

Думал, что Sleep есть, нет.


--------------------
save your mind
PM MAIL   Вверх
andrew_121
Дата 13.7.2009, 01:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 11
Всего: 33



dix75, sleep(), msleep(), usleep()


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
SABROG
Дата 13.7.2009, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(dix75 @ 12.7.2009,  23:31)
Добрый вечер!

Как в Qt можно приостановить выполнение программы?

Думал, что Sleep есть, нет.

Зачем?


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
dix75
Дата 13.7.2009, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 462
Регистрация: 17.7.2007

Репутация: 1
Всего: 1



Цитата(andrew_121 @  13.7.2009,  01:36 Найти цитируемый пост)
dix75, sleep(), msleep(), usleep()


а где их найти?

если в QThread
Код

    static void sleep(unsigned long);
    static void msleep(unsigned long);
    static void usleep(unsigned long);


так они протектед
значит наследника писать надо, что не есть гуд



Цитата(SABROG @  13.7.2009,  08:29 Найти цитируемый пост)
Зачем?

С целью сообщения пользователю, о некорректных или ошибочно введенных данных


--------------------
save your mind
PM MAIL   Вверх
KL7
Дата 13.7.2009, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 7.12.2008
Где: Minsk City

Репутация: 2
Всего: 2



Цитата(dix75 @  13.7.2009,  08:47 Найти цитируемый пост)
С целью сообщения пользователю, о некорректных или ошибочно введенных данных 

а подробнее ситуацию? просто ето же можно организовать сообщением, которое пользователь почитает и закроет... и никакой паузы не надо - обычный QMessageBox...  smile 

хотя удобный вариант слипа тоже интересен... просто для расширения кругозора smile 

Это сообщение отредактировал(а) KL7 - 13.7.2009, 08:55
PM MAIL ICQ   Вверх
dix75
Дата 13.7.2009, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 462
Регистрация: 17.7.2007

Репутация: 1
Всего: 1



Цитата(KL7 @ 13.7.2009,  08:54)
Цитата(dix75 @  13.7.2009,  08:47 Найти цитируемый пост)
С целью сообщения пользователю, о некорректных или ошибочно введенных данных 

а подробнее ситуацию? просто ето же можно организовать сообщением, которое пользователь почитает и закроет... и никакой паузы не надо - обычный QMessageBox...  smile 

хотя удобный вариант слипа тоже интересен... просто для расширения кругозора smile

Виджет в котором ввелись некорректные данные просто помигает 
типа что-то такого

Код

  template <typename T>  static  void Migalo(T * sender)
    {
        QPalette new_pal = sender->palette();
        QPalette old_pal = sender->palette();

                    new_pal.setColor(QPalette::Active, QPalette::Base, Qt::red);
        for(int i = 0; i < 2; ++i)
        {

            sender->setPalette(new_pal);
           // ::sleep(80);

            sender->setPalette(old_pal);
      //      Sleep(80);
        }
    }


а бесконечные месаги, не всегда полезны, хотя и без них никуда.
Просто в тех местах где необходимо я просто мигаю
например в вводе password никто не будет проверять корректность вводимых данных Валидатором


--------------------
save your mind
PM MAIL   Вверх
Любитель
Дата 13.7.2009, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



dix75, подобный код вообще говоря работать не будет. Ибо вовсе не обязательно отработает прорисовка виджета (есть processEvents у QApplication, если что). А вообще - метод wait от currentThread.


--------------------
PM MAIL ICQ Skype   Вверх
dix75
Дата 13.7.2009, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 462
Регистрация: 17.7.2007

Репутация: 1
Всего: 1



Цитата(Любитель @  13.7.2009,  11:22 Найти цитируемый пост)
есть processEvents у QApplication, если что)


Неподскажишь случаем как с processEvents такое действие замутить?



--------------------
save your mind
PM MAIL   Вверх
Любитель
Дата 13.7.2009, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



перед слипом вызови - чтоб отрисовка произошла


--------------------
PM MAIL ICQ Skype   Вверх
dix75
Дата 13.7.2009, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 462
Регистрация: 17.7.2007

Репутация: 1
Всего: 1



Цитата(Любитель @ 13.7.2009,  14:31)
перед слипом вызови - чтоб отрисовка произошла

а в этом смысле.

так это понятно
Ну все равно спасибо.


--------------------
save your mind
PM MAIL   Вверх
dix75
Дата 25.7.2009, 01:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 462
Регистрация: 17.7.2007

Репутация: 1
Всего: 1



Цитата(Любитель @  13.7.2009,  11:22 Найти цитируемый пост)
А вообще - метод wait от currentThread.

и как ?
при таком использовании
Код

QThread::currentThread()->wait(8000);

получаю
Код

QThread::wait: Thread tried to wait on itself


и ничего не происходит



--------------------
save your mind
PM MAIL   Вверх
mes
Дата 25.7.2009, 04:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 7
Всего: 250



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


--------------------
PM MAIL WWW   Вверх
W4FhLF
Дата 25.7.2009, 05:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 4
Всего: 121



Код

    QMutex mutex;
    mutex.lock();
    
    QWaitCondition pause;
    pause.wait(&mutex, 8000); // Будет ждать 8 сек


Это сообщение отредактировал(а) W4FhLF - 25.7.2009, 05:28


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
dix75
Дата 25.7.2009, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 462
Регистрация: 17.7.2007

Репутация: 1
Всего: 1



W4FhLF, 
спасиб


--------------------
save your mind
PM MAIL   Вверх
aaa82
Дата 15.9.2009, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 5.7.2007

Репутация: нет
Всего: нет



у меня прорисовка с "pause.wait(&mutex, 8000);" всё равно не происходит
идёт итерационный процесс и QLineEdit не обновляется

а вот когда QMessageBox для прикола сделал - прорисовалось всё
но это не подходит

{...

   if (i%1000 == 0){
      fileName=QString::number(i,10);
      ui.strCalc->setText(fileName); // установить текст для QLineEdit
      update(); // и апдейт не спасает
      pause.wait(&mutex,1000);
      //QMessageBox::information(this, tr(""), tr("..."));
   }
}

пс: тут меня всё подталкивают к concurrent programming по этому случаю...

ппс: нашёл методом тыка такой варьянт (работает только в паре  smile ): 

repaint();
resize();

и не недо никаких пауз

Это сообщение отредактировал(а) aaa82 - 16.9.2009, 07:33
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0776 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.