2016-03-18 3 views
1

Dieses Programm schlägt automatisch fehl, es wird keine Nachricht im Debug-Modus oder im Freigabemodus angezeigt, das Fenster wird nicht angezeigt. Sie können jedoch sehen, dass die Programm.exe im Task-Manager ausgeführt wird. Was ist los ? wie man es repariert ? Warum scheitert es? Warum wird keine Nachricht angezeigt?Was ist falsch mit dieser Art des Ladens von C++ QStringList als Modell für eine QML ListView?

Die QML Schnittstellendatei

//main.qml 
import QtQuick 2.5 

ListView { 
    width: 100; height: 100 

    model: myModel 
    delegate: Rectangle { 
     height: 25 
     width: 100 
     Text { text: modelData } 
    } 
} 

Die C++ Hauptdatei

// 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(); 
} 

Antwort

2

Der Code wird keine neue Fenster, weder in C++ noch in QML.

Es gibt zwei Möglichkeiten, um ein Fenster mit QtQuick zu erstellen:

  1. Anstelle der Verwendung von QQmlApplicationEngine, verwenden Sie die C++ Klasse QQuickView, die von QQuickWindow erbt. Denken Sie daran, show() anrufen. Dies ist, was das Beispiel bei https://doc.qt.io/qt-5/qtquick-models-stringlistmodel-example.html tut. Wenn Sie QQmlApplicationEngine verwenden, müssen Sie einen Window irgendwo in Ihrer QML-Datei haben. Denken Sie daran, visible auf True zu setzen. QQmlApplicationEngine erbt nicht von einer Fenster-Basisklasse, deshalb muss das Fenster in QML erstellt werden.

+0

Das lässt mich wie ein Idiot aussehen, danke für Ihre schnelle Antwort. –

+0

Warum ist das Fenster standardmäßig nicht sichtbar? –

+0

Ich möchte in der Lage sein, Modellklassen zu entwerfen, die mit QML-Ansichten arbeiten. Kann ich sie erstellen und unter Konsolenanwendung testen? Gibt es eine fertige Konsole, die speziell zum Testen von ModelClasses entwickelt wurde? –