C++ Qt5 QuickView无法创建窗口:没有可用的屏幕
每当我尝试运行以下代码时,都会收到此错误(标题,如下所示):C++ Qt5 QuickView无法创建窗口:没有可用的屏幕,c++,qt,qml,qt5,qquickview,C++,Qt,Qml,Qt5,Qquickview,每当我尝试运行以下代码时,都会收到此错误(标题,如下所示): #include <QCoreApplication> #include <QQuickView> int main(int argc, char *argv[]){ QCoreApplication app(argc, argv); QQuickView view; view.setSource(QUrl::fromLocalFile("app.qml")); QObjec
#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();
}
#包括
#包括
int main(int argc,char*argv[]){
QCore应用程序应用程序(argc、argv);
QQuickView视图;
view.setSource(QUrl::fromLocalFile(“app.qml”);
QObject*对象=(QObject*)视图。根对象();
view.show();
删除对象;
返回app.exec();
}
无法创建窗口:没有可用的屏幕
程序意外地完成了
我能在网上找到的关于该错误的所有信息都是由特定条件引起的bug报告,这些条件比上面提到的要复杂得多
<> >代码> App.QML < /Cord>是一个运行良好的文件,即没有上面的C++,并且在一个单独的项目中配置为“Qt快速UI”。给出它的qrc://
路径,或者故意指定一个不存在的文件都没有效果
注意QObject*
cast-这在中不存在,但没有:
/main.cpp:11:错误:无法使用“QQuickItem*”类型的右值初始化“QObject*”类型的变量
如何实现这一点?QCoreApplication可以与控制台应用程序一起使用,而不是与GUI应用程序一起使用,也就是说,您必须使用
QGuiApplication
对象。在我看来,您创建了一个控制台应用程序而不是图形应用程序
您可以通过Qt快速应用程序
创建适当的应用程序,将“app.qml”作为资源添加到该项目中,并调用这样的文件,而不是项目模板提供的默认“main.qml”
如果要快速修复当前项目,只需检查.pro文件是否设置为导入GUI库:
QT += gui qml quick
将qml文件设置为资源:
文件->新建文件或项目…->创建新的资源文件Qt->Qt资源文件
.qrc
文件,然后单击添加现有文件
添加“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();
}
#包括
#包括
int main(int argc,char*argv[])
{
QGUI应用程序a(argc,argv);//GUI应用程序!!!
QQuickView视图;
view.setSource(QUrl(QStringLiteral)(“qrc:///app.qml")));
view.show();
返回a.exec();
}
然而,选择
Qt快速应用程序
项目将是更明智的选择。注意:为了拥有主机操作系统的本机风格,请使用QApplication
而不是QGuiApplication
。这一点很好。但是,对于不使用QWidget
派生类的QML应用程序,QGuiApplication
应该是首选,因为它不依赖于QtWidgets
库。好的。这就是我所记得的:不确定这是否仍然适用。我明白了,顺便说一句,我以前相信过你的话!从图库示例的.pro
文件中,我们看到:!安卓:!ios:!blackberry:qtHaveModule(小部件):QT+=widgets
。现在的问题是:平台被删除是因为没有提供默认样式,或者样式(将)添加到QtQuickControls
?可能是第一个。你知道吗?我将尽快在Android上用5.4.0 RC试用该示例:RC示例具有代码!没有桌面:QT+=widgets
。删除该行会在我的Windows机器上产生默认的L&F,而我的4.4设备有一种很好的Android
感觉(不同于5.3)。Pretty必须解决:按照示例,使用.pro
文件中的上面一行,然后使用QT\u WIDGETS\u LIB
导入/使用QGuiApplication
或QApplication
。可能桌面主题仍将绑定到小部件库,我不知道这一点。然而,对桌面环境有这样的依赖并不是那么可怕。