此程序无提示失败,在调试模式或发布模式下没有显示消息,窗口未显示,您可以看到在任务管理器中运行的program.exe。到底是怎么回事 ?怎么解决?为什么会失败?为什么没有消息出现?
QML接口文件
//main.qml
import QtQuick 2.5
ListView {
width: 100; height: 100
model: myModel
delegate: Rectangle {
height: 25
width: 100
Text { text: modelData }
}
}
c ++主文件
// main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQmlContext>
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QStringList dataList;
dataList.append("item 1");
dataList.append("item 2");
dataList.append("item 3");
dataList.append("item 4");
dataList.append("item 5");
QQmlApplicationEngine engine;
engine.rootContext()->setContextProperty("myModel",QVariant::fromValue(dataList) );
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
return app.exec();
}
答案 0 :(得分:2)
代码不会在C ++和QML中创建窗口。
使用QtQuick创建窗口有两种方法:
不使用QQmlApplicationEngine
,而是使用继承自QQuickView
的C ++类QQuickWindow
。记得致电show()
。这就是https://doc.qt.io/qt-5/qtquick-models-stringlistmodel-example.html的例子。
如果您使用QQmlApplicationEngine
,则需要在QML文件中的某处Window。请记住将visible
设置为true。 QQmlApplicationEngine
不会从任何窗口基类继承,这就是需要在QML中创建窗口的原因。