Я получаю эту ошибку (название, ниже) всякий раз, когда я пытаюсь запустить следующий код:
#include <QCoreApplication>
#include <QQuickView>
int main(int argc, char *argv[]){
QCoreApplication app(argc, argv);
QQuickView view;
view.setSource(QUrl::fromLocalFile("app.qml"));
QObject *object = (QObject*)view.rootObject();
view.show();
delete object;
return app.exec();
}
Невозможно создать окно: нет доступных экранов
Программа неожиданно завершилась.
Все, что я могу найти в Интернете для этой ошибки, — это сообщения об ошибках, возникающих из-за более сложных условий, чем описанные выше.
app.qml
это файл, который работает нормально один, то есть без вышеупомянутого C ++ и в отдельном проекте, настроенном как «Qt Quick UI». Давая это qrc://
путь или намеренное указание несуществующего файла не имеет никакого эффекта.
Обратите внимание QObject*
бросили — этого не было в документы, но без этого
/main.cpp:11: ошибка: невозможно инициализировать переменную типа ‘QObject *’ с помощью значения r типа QQuickItem *
Как это должно быть сделано?
QCoreApplication
можно использовать с консольное приложение, не с GUI, то есть вы должны использовать QGuiApplication
объект. Мне кажется, что вы создали консольное приложение вместо графического.
Вы можете создать правильное приложение через Qt Quick Application
добавьте ваш «app.qml» в качестве ресурса к этому проекту и вызовите такой файл вместо файла по умолчанию «main.qml», предоставленного шаблоном проекта.
Если вы хотите быстро исправить свой текущий проект, просто убедитесь, что .pro-файл настроен на импорт библиотек графического интерфейса:
QT += gui qml quick
Установите ваш qml-файл в качестве ресурса:
file -> new File or Project... -> Qt -> Qt Resource File
.qrc
файл и нажмите add existing file
добавить свой файл «app.qml»Наконец, переписать ваш основной как это:
#include <QQuickView>
#include <QGuiApplication>
int main(int argc, char *argv[])
{
QGuiApplication a(argc, argv); // GUI APPLICATION!!!
QQuickView view;
view.setSource(QUrl(QStringLiteral("qrc:///app.qml")));
view.show();
return a.exec();
}
Тем не менее, идя за Qt Quick Application
Проект будет более разумным выбором.