это старая техника в графических приложениях, но она может работать для вас.
используйте QObject::startTimer(0)
, затем переопределите QObject :: timerEvent (), чтобы получить various components that rely on a fully constructed application object
. Таким образом, various components that rely on a fully constructed application object
будет создан только после запуска цикла событий.
небольшое пояснение: QObject :: startTimer (int ms ) - это функция, которая запускает таймер в миллисекундах, который срабатывает каждые мс . Если вы передаете «0» в качестве аргумента, он срабатывает, как только начинается цикл обработки событий. как только он срабатывает, он вызывает QObject :: timerEvent () в том же классе, который был вызван QObject :: startTimer (). убедитесь, что вы остановили таймер с помощью QObject :: killTimer () внутри повторной реализации QObject :: timerEvent (), иначе таймер сработает бесконечно.
но @Mat имеет смысл, то, что цикл обработки событий не начался, не означает, что приложение QCoreApplication построено не полностью. Попробуйте взглянуть на это.
{
QApplication app(argc, argv); //this is already a fully contructed QApplication instance
MyClass *myObject = new MyClass; //this relies on a fully constructed QApplication instance
return app.exec(); //this starts the event loop as you already know.
}