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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QCoreApplication::exec(): определение нахождения вне этой функции  (Прочитано 3775 раз)
AkonResumed
Чайник
*
Offline Offline

Сообщений: 81


Просмотр профиля
« : Май 02, 2021, 08:44 »

Как внутри foo() мы можем определить, что foo() вызвана не из QCoreApplication::exec(), а из точек 1 или 2?
Код:
static void foo()
{
...
}

int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
foo();  // 1
const int result = QCoreApplication::exec();
foo();  // 2
return result;

}

Вообще есть QEventLoop::isRunning(). Альтернативно - как добраться до экземпляра QEventLoop главного потока? Сходу из документации не могу выудить.

Есть еще QCoreApplication::eventDispatcher(), но он создается вне QCoreApplication::exec().
 
« Последнее редактирование: Май 02, 2021, 08:47 от AkonResumed » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Май 02, 2021, 10:13 »

С свое время я не стал упорствовать (сходу не получилось) и без затей завел флажок (у меня член класса) который взводится перед вызовом exec и сбрасывается после
Записан
AkonResumed
Чайник
*
Offline Offline

Сообщений: 81


Просмотр профиля
« Ответ #2 : Май 02, 2021, 12:29 »

QThread::currentThread()->loopLevel(); - похоже, оно! Since Qt 5.5.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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