Открытие qml окна с С++

78
15 июля 2021, 04:20

Всем привет. Никак не могу открыть обычное qml окно с стороны С++. Как бы вы реализовали данную функцию?

У меня вот такое решение:

view->setSource(QUrl::fromLocalFile(QApplication::applicationDirPath() + "EQDriveUpdateWindow.qml"));
view->show();

Но в итоге открывается и моё созданное окно и просто пустое окно. Как исправить?

Answer 1

Вангую - вы использовали QQuickView для отображения QML, но забыли заменить объявление окна на альтернативный корневой элемент.

main.cpp

#include <QApplication>
#include <QQuickView>
int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    QQuickView view;
    view.setSource(QUrl(QStringLiteral("qrc:/main.qml")));
    view.show();
    return app.exec();
}

main.qml

import QtQuick.Controls 2.0
import QtQuick.Window 2.12
Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")
    Button {
        anchors.centerIn: parent
        height: 100
        width: 100
        text: "123"
    }
}

При таком раскладе вы бы получили исчерпывающее предупреждение в консоли...

Исправить достаточно просто - нужно заменить корневой элемент Window на Item с привязкой ширины и высоты к родителю

import QtQuick.Controls 2.0
import QtQuick.Window 2.12
import QtQuick 2.0
Item {
    Button {
        anchors.centerIn: parent
        height: 100
        width: 100
        text: "123"
    }
    onParentChanged: {
        width=Qt.binding(()=>parent.width);
        height=Qt.binding(()=>parent.height);
    }
}
READ ALSO
Как работает подключение connect?

Как работает подключение connect?

Как устроена функция connect? Как лучше реализовать, стоит ли подключать 2 или 10 соединений с разными серверамиЧто будет, если подключений больше...

91
GNU GCC compiler CodeBlocks не компелируется

GNU GCC compiler CodeBlocks не компелируется

Поставил CodeBlocks для плюсов, компилятор GNU GCCНе запускается, пишет следующее:

108
Как Нарисовать полукруги вокруг центра с помощью Qt?

Как Нарисовать полукруги вокруг центра с помощью Qt?

Необходимо нарисовать полукруги вокруг центра с помощью Qt

75