I have this pro file
QT += qml quick widgets
TARGET = sPassKeeper
include(src/src.pri)
include(qml/qml.pri)
RESOURCES += \
resources.qrc
in src pri and qml pri only single lines qml.pri
OTHER_FILES += \
qml/main.qml
src.pri
SOURCES += \
src/main.cpp
In main.cpp got this code
#include <QApplication>
#include <QQmlApplicationEngine>
#include <QtDebug>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QQmlApplicationEngine engine(QUrl("qrc:/new/prefix1/qml/main.qml"));
qDebug() << "Ok engine created";
// Q_UNUSED(engine)
return app.exec();
}
main.qml
import QtQuick 2.0
import QtQuick.Controls 1.1
ApplicationWindow{
title: "sPassKeeper"
Button{
text: "Hello"
}
}
As a result got this output
QML debugging is enabled. Only use this in a safe environment. Ok engine created
Nothing displayed and process is not completed.
You're missing this:
ApplicationWindow {
visible: true
Qt Creator's new project wizard (New File or Project... > Qt Quick Application
) has a step where you choose the component set (Select Qt Quick Component Set
). If you choose Qt Quick Controls (which are required in order to use ApplicationWindow
), Creator generates the correct code for you:
import QtQuick 2.2
import QtQuick.Controls 1.1
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
menuBar: MenuBar {
Menu {
title: qsTr("File")
MenuItem {
text: qsTr("Exit")
onTriggered: Qt.quit();
}
}
}
Text {
text: qsTr("Hello World")
anchors.centerIn: parent
}
}
You need to create QQuickWindow from object created by engine. This is a peace of code from my project about it:
engine.load(QUrl(QString(String_val(_qmlpath))));
QList<QObject*> xs = engine.rootObjects();
if (xs.count() == 0) {
Q_ASSERT_X(false, "Creating C++ runtime", "Your QML file seems buggy");
}
QQuickWindow *window = qobject_cast<QQuickWindow*>(xs.at(0) );
window->showMaximized();
app.exec();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With