[ОБНОВЛЕНИЕ] Хорошо, я обновляю свой предыдущий вопрос. Сначала я подумал, что предупреждение появляется, когда я удаляю widgets
из файла .pro, что было бы странным поведением. После копания я получил совершенно пустое приложение, и проблема все еще сохраняется. Мое приложение выглядит так:
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
return app.exec();
}
Основываясь на других сообщениях с подобной проблемой, я узнал, что QApplication
нужно инициализировать в первую очередь. В этом случае больше НИЧЕГО в приложении нет. Как это предупреждение все еще появляется?
W/ (16992): (null):0 ((null)): WARNING: QApplication was not created in the main() thread.
Я компилирую приложение прямо на своем Android-устройстве, используя набор Android for x86 (GCC 4.9, Qt 5.6.0)
.
---- СТАРЫЙ ВОПРОС\Начать ----
В настоящее время разрабатывается приложение для Android на основе Qt 5.6 (C++ и QML). Поскольку пользовательский интерфейс основан на QtQuick, я удалил «виджеты» из файла pro.file.
QT += core qml quick widgets network svg xml gui
это приводит к предупреждению:
WARNING: QApplication was not created in the main() thread.
а также... как только я создаю экземпляр QQmlEngine в main() (конечно, после создания QApplication), также отображается это предупреждение:
QObject: Cannot create children for a parent that is in a different thread.
(Parent is QQmlDebuggerServiceFactory(0x65fffcd0), parent's thread is QThread(0x5d449f10), current thread is QThread(0x65183000)
Судя по всему, приложение запускается в другом потоке? а main() в другом? как только я поместил «виджеты» в файл .pro, обе ошибки больше не появлялись. Я действительно не понимаю корреляции между двумя вещами. P.S. не очень актуально на данном этапе программы, но я также не создаю никаких новых потоков в своем приложении. Вот как выглядит мой main():
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
qmlRegisterUncreatableType<MainFrame>("PSGApp", 1, 0, "MainFrame", "");
MainFrame m_MainFrame;
QQmlEngine engine;
engine.rootContext()->setContextProperty("q_MainFrame", &m_MainFrame);
engine.rootContext()->setContextProperty("Ctr", m_MainFrame.c());
engine.rootContext()->setContextProperty("Dev", m_MainFrame.c()->dev());
engine.rootContext()->setContextProperty("Def", m_MainFrame.c()->dev()->_def());
engine.rootContext()->setContextProperty("ModelUdpDevices", m_MainFrame.UdpDevices());
engine.rootContext()->setContextProperty("ModelDashboardDevices", m_MainFrame.DashboardDevices());
engine.rootContext()->setContextProperty("ModelZones", m_MainFrame.c()->dev()->_DevZones());
engine.rootContext()->setContextProperty("ModelRGParameter", m_MainFrame.c()->dev()->RegelParameter());
engine.rootContext()->setContextProperty("ModelSYSParameter", m_MainFrame.c()->dev()->SysParameter());
engine.rootContext()->setContextProperty("ModelKOMMParameter", m_MainFrame.c()->dev()->KommParameter());
QObject::connect(&app, SIGNAL(applicationStateChanged(Qt::ApplicationState)), &m_MainFrame, SLOT(applicationStateChanged(Qt::ApplicationState)));
QObject::connect(&engine, SIGNAL(quit()), &app, SLOT(quit()));
QQmlComponent component(&engine,QUrl(QStringLiteral("qrc:/qml/main.qml")));
component.create();
return app.exec();
}
---- СТАРЫЙ ВОПРОС\Конец ----