Qt5 QuickView无法创建窗口:没有可用的屏幕
Qt5 QuickView cannot create window: no screens are available
每当我尝试运行以下代码时,我都会收到这个错误(标题如下):
#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:错误:无法使用类型为"QQuickItem*"的右值初始化类型为"QObject*"的变量
应该如何做到这一点?
QCoreApplication
可以与控制台应用程序一起使用,而不能与GUI应用程序一起使用,即必须使用QGuiApplication
对象。在我看来,您创建了一个控制台应用程序,而不是图形应用程序。
您可以通过Qt Quick Application
创建一个合适的应用程序,将您的"app.qml"作为资源添加到该项目中,并调用这样一个文件,而不是项目模板提供的默认"main.qml"。
如果你想快速修复你当前的项目,只需检查.pro文件是否设置为导入GUI库:
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
项目将是更明智的选择。
相关文章:
- UE4-如何在给定4个屏幕坐标的情况下缩放纹理或材质
- 如何在GTK程序运行时禁用屏幕保护程序/电源管理/屏幕消隐
- 使用 SFML 和 C++ 将 Pixel 打印到屏幕上
- 在 Windows 8/10 技术中完全实时的屏幕捕获,没有延迟
- Winapi:屏幕截图未显示在窗口中
- 如何在快板的屏幕中显示子位图的绘制?
- 按回车键后输出屏幕关闭
- 要在屏幕上绘制一些小瓷砖,我应该使用 QQuickItem 还是 QQuickPaintedItem?
- SFML 向下移动时如何围绕屏幕中心旋转?
- 截取屏幕截图后程序卡住
- C++鼠标单击时的屏幕截图不起作用
- 屏幕插入运算符<<的运算符过载问题
- 获取网格中心的屏幕位置
- SFML 中的字体.信息不显示在屏幕上.显示的不是信息,而是点
- 如何在屏幕上环绕x和y?
- GetDIBits 在屏幕捕获函数中多次迭代后返回零
- OpenGL ES 2.0将纹理绘制到屏幕上是行不通的
- GTKMM:拍摄绘图区域的屏幕截图?
- OpenGL - 添加第二个着色器属性会导致空白屏幕
- Qt5 QuickView无法创建窗口:没有可用的屏幕