Russian Qt Forum

Qt => Общие вопросы => Тема начата: AkonResumed от Май 02, 2021, 08:44



Название: QCoreApplication::exec(): определение нахождения вне этой функции
Отправлено: AkonResumed от Май 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().
 


Название: Re: QCoreApplication::exec(): определение нахождения вне этой функции
Отправлено: Igors от Май 02, 2021, 10:13
С свое время я не стал упорствовать (сходу не получилось) и без затей завел флажок (у меня член класса) который взводится перед вызовом exec и сбрасывается после


Название: Re: QCoreApplication::exec(): определение нахождения вне этой функции
Отправлено: AkonResumed от Май 02, 2021, 12:29
QThread::currentThread()->loopLevel(); - похоже, оно! Since Qt 5.5.