Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
Заблокирован

QApplication::processEvents(), как отловить вызов exit() ?

10.11.2014, 18:52. Показов 2197. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем нужно организовать одну 3D рисовалку ( типа игры ), для который как известно нужен непрерывный мэйн луп, в котором будет происходить прорисовка. В QApplication обычно используют exec() для запуска главного цикла обработки сообщений, а вот если я вручную хочу его организовать для своих целей, как лучше это сделать? Ну..можно вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "mainwindow.h"
#include <QApplication>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
 
    while(true)
    {
        a.processEvents();        
        //ТУТ БУДЕТ ПРОИСХОДИТЬ RENDERING
    }
    
    return 0;
    //return a.exec();
}
но тогда как в цикле отловить exit() из какого - нибуть места программы? processEvents() - то ничего не возвращает... Или как - то по другому нужно делать?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.11.2014, 18:52
Ответы с готовыми решениями:

Как правильно использовать processEvents() ?
Тэкс... парни, что - то поток отказывается сигналы обрабатывать не смотря на processEvents() ... Создал новый GUI проект, добавил класс...

Как работает QApplication::aboutToQuit ?
Какова же обстановка внутри обработчика этого сигнала? Уничтожены ли все объекты программы к этому моменту? Обработает ли main event...

Сегфолтится QApplication::clipboard() в Андроиде. Можно как-нибудь побороть?
Инструментарий: - QtCreator 3.0.0, - Qt 5.2 - android-ndk r9c - android-sdk r22.3 - Сборка под armeabi-v7a Сделал...

9
232 / 232 / 69
Регистрация: 30.09.2012
Сообщений: 545
10.11.2014, 21:32
Такое не подходит?

C++ (Qt)
1
void QCoreApplication::aboutToQuit() [signal]
http://qt-project.org/doc/qt-5... boutToQuit
0
Заблокирован
10.11.2014, 22:11  [ТС]
Цитата Сообщение от Chernobyl Посмотреть сообщение
Такое не подходит?
А хз... Ну вот как этим костылём прервать выполнение цикла в моём примере?
0
232 / 232 / 69
Регистрация: 30.09.2012
Сообщений: 545
10.11.2014, 22:55
-THE_MASTER666-, При срабатывании сигнала поменять переменную bool с правды на ложь и цикл закончиться. Тут сложность в том, что я не любитель конектов в main, возможно нужно будет создавать функцию которая будет менять переменную и конектить все это с новым синтаксисом сигналов и слотов.б Если лучшего не предложат, то можно это пропробовать, хотя как тут по другому выкрутиться-то?
1
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
11.11.2014, 12:06
Цитата Сообщение от -THE_MASTER666- Посмотреть сообщение
нужен непрерывный мэйн луп
Действительно? Если юзер ничего не делает, и соответственно ничего на экране не меняется, то зачем бесконечно рендерить?
0
Заблокирован
11.11.2014, 18:33  [ТС]
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
Если юзер ничего не делает, и соответственно ничего на экране не меняется, то зачем бесконечно рендерить?
В нормальной игру таких моментов фактический не бывает, т.к. обычно игра многопользовательская и юзеров много бегает, если даже нет, то на фоне ходят какие - то монстры, если и их нет - то колыхаться на ветру какой - нибуть флаг должен, должна работать скелетная анимация собственного персонажа во время его простоя, ну там руку почёсывет или пританцовывает, рябь на воде на фоне рендериться и тд...
В общем в играх обычно непрерывный мэйн луп.
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
11.11.2014, 18:43
-THE_MASTER666-, прям таки непрерывный, или по событию? К чему это, имеет ли смысл делать fps>30, если человеческий глаз это уже не воспринимает, и не использовать ли стандартный евентлуп?
Рендерить можно в другом потоке(Многопоточная работа с OpenGL)
0
Заблокирован
11.11.2014, 19:23  [ТС]
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
прям таки непрерывный, или по событию?
Конечно непрерывный, иначе FPS упадёт.
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
К чему это, имеет ли смысл делать fps>30
Конечно имеет.
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
если человеческий глаз это уже не воспринимает,
Воспринимает / не воспрсинимает - дело десятое (да и спорное), но тебе любой геймер скажет, что для динамической игры типа 3D шутера, FPS должен быть OVER 100 FPS, иначе играть так сказать профессионально будет невозможно
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
Рендерить можно в другом потоке
Да...рендерить можно хоть и ста потоков, толку правда от этого мало, т.к. видео карта всегда одна.
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
12.11.2014, 10:37
Цитата Сообщение от -THE_MASTER666- Посмотреть сообщение
Воспринимает / не воспрсинимает - дело десятое (да и спорное), но тебе любой геймер скажет, что для динамической игры типа 3D шутера, FPS должен быть OVER 100 FPS, иначе играть так сказать профессионально будет невозможно
OMG. Делать что-то похожее на AAA на Qt, это забивание гвоздей микроскопом.
0
Заблокирован
12.11.2014, 21:52  [ТС]
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
Делать что-то похожее на AAA
Что за ААА ?
Это из песни
Голубь,голубь,А-а-ААА....сверху сверху - А-а-АААА...на башку мне - А-а-ААА...на пиджак мне А-а-аАААА...
ахахаха
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.11.2014, 21:52
Помогаю со студенческими работами здесь

ProcessEvents определенное время
Нужно обрабатывать события не меньше определенного времени. Как реализовать лучше?

Через какой объект вызывается processEvents ?
Не в основном потоке крутится вечный while, хочу в начала цикла обрабатывать сообщения, чтоб сигналы приходили. Только вот я не понял,...

Можно ли переопределить QApplication::exec() или как сделать в main'e цикл, который может обрабатывать события
В общих чертах программа должна симулировать движение точки(окружности) на плоскости с возможностью изменения его траектории и скорости с...

Не удается выполнить исходящий вызов, так как приложение обрабатывает входящий синхронный вызов
И снова добренького вечера) Столкнулся с такой проблемой, может кто знает пути выхода из нее. Есть процедура чтения свойств флешки: ...

ASSERT No style available without qapplication
В qt я новичок. Имеется следующий проект main.cpp #include &lt;QCoreApplication&gt; #include &lt;QtWebKitWidgets/QWebPage&gt; #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru