Russian Qt Forum
Ноябрь 22, 2024, 22:14 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Выход из бесконечного цикла  (Прочитано 3480 раз)
Shu-Shu
Гость
« : Март 06, 2011, 20:08 »

Пишу в теме для новичков, так что сильно ногами не пинайте  Улыбающийся
Имеем форму, на ней таблицу, в конструкторе вызывается функция, которая таблицу постоянно рефрешит

while(1)
    {
        QTime time;
        time.start();

        //.......
        //обновление таблицы
        //.......
       
        for(;time.elapsed() < 1000;){
            qApp->processEvents();
        }
       
    }

Далее закрываю программу на крестик, смотрю в процессы и огорчаюсь: процесс висит, видимо из-за бесконечного цикла. Так вот, вопрос в том, как убивать процесс после завершения программы.
И второй вопрос, как сделать более адекватную задержку в выполнении программы, чем приведенная мной?
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #1 : Март 06, 2011, 20:18 »

Когда жмёте на крестик  Смеющийся вызывайте слот quit()
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Fat-Zer
Гость
« Ответ #2 : Март 06, 2011, 20:33 »

такое и в страшном сне не приснится))
можно просто QTimer + слот для обновления таблицы.
Записан
Shu-Shu
Гость
« Ответ #3 : Март 06, 2011, 20:48 »

такое и в страшном сне не приснится))
можно просто QTimer + слот для обновления таблицы.

Спасибо, попробую. Про существовании QTimer я вообще не подозревал  Веселый
А слот quit() не нашел, есть close(), но переопределить его нельзя.

С QTimer'ом все заработало, еще раз спасибо  Подмигивающий
« Последнее редактирование: Март 06, 2011, 21:01 от Shu-Shu » Записан
Fat-Zer
Гость
« Ответ #4 : Март 06, 2011, 21:15 »

А слот quit() не нашел, есть close(), но переопределить его нельзя.
это слот QApplication, унаследованный от QCoreApplication. посмотри исходники... там в принципе можно понять, почему не работает...
ЗЫ: вроде при клике на крестик как раз вызывается закрытие окна(слот close()), а при смерте всех QObject'ов уже вызывается метод quit().
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #5 : Март 07, 2011, 01:28 »

а при смерте всех QObject'ов уже вызывается метод quit().
это неверно, как минимум 1 куобжект на момент вызова quit есть - это сам куаппликейшн. более того виджеты не удаляются по дефолту, а лишь хайдятся при закрытии их.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.058 секунд. Запросов: 23.