Qt 这种加载C++;QStringList作为QML ListView的模型?

Qt 这种加载C++;QStringList作为QML ListView的模型?,qt,qml,Qt,Qml,此程序以静默方式失败,在调试模式或发布模式下不会显示任何消息,窗口不会显示,但您可以看到program.exe在任务管理器中运行。发生了什么事?如何修复它?为什么它会失败?为什么没有消息出现 QML接口文件 //main.qml import QtQuick 2.5 ListView { width: 100; height: 100 model: myModel delegate: Rectangle { height: 25 wid

此程序以静默方式失败,在调试模式或发布模式下不会显示任何消息,窗口不会显示,但您可以看到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();
}
//main.cpp
#包括
#包括
#包括
int main(int argc,char*argv[])
{
QGUI应用程序应用程序(argc、argv);
QStringList数据表;
数据表。附加(“第1项”);
数据表。附加(“第2项”);
数据表。附加(“第3项”);
数据表。附加(“第4项”);
数据表。附加(“第5项”);
qqmlaplicationengine;
engine.rootContext()->setContextProperty(“myModel”,QVariant::fromValue(dataList));
engine.load(QUrl(QStringLiteral(“qrc:/main.qml”));
返回app.exec();
}

<代码> > P>代码不创建窗口,既不在C++中,也不在QML中。 使用QtQuick创建窗口有两种方法:

<> > >使用C++类<代码> qQueQueue>代码>,继承了<代码> QQuaskWiels>代码>。记得调用
show()
。这就是at的示例所做的

  • 如果使用
    QQmlApplicationEngine
    ,则需要在QML文件中的某个位置设置一个。记住将
    visible
    设置为true
    QQmlApplicationEngine
    不从任何窗口基类继承,这就是为什么需要在QML中创建窗口


  • 这让我看起来像个傻瓜,感谢您的快速响应。为什么默认情况下窗口不可见?我希望能够设计使用QML视图的模型类。我可以制作它们并在控制台应用程序下测试它们吗?是否有一个现成的控制台类专门用来测试模型类?我不知道为什么默认情况下windows不可见,实际上我不确定情况是否如此,我只是想我记得它。有一个控制台测试您的模型是否存在错误。如果你想在控制台上打印模型内容,我不知道会发生这样的事情。KDAB的Gammary工具()可以在UI中显示模型的内容以进行调试。