簡體   English   中英

從C ++訪問現有的QML組件

[英]Access to existing QML component from C++

我是QML的新手,無法解決一個簡單的問題。 我想從C ++訪問QML組件,但不能。 指針test始終為0。這可能是什么原因?

代碼如下:

main.cpp

int main(int argc, char *argv[])
{
    QGuiApplication &app=reg6::Bonder::BonderGuiApplication::instance();
    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

    QObject* test=engine.rootObjects().first()->findChild<QObject*> ("cameraArea");
    test->setProperty("color","black");

    return app.exec();
}

main.qml

import QtQuick 2.5
import QtQuick.Controls 1.4
import QtQuick.Dialogs 1.2
import QtQuick.Layouts 1.0

ApplicationWindow {
visible: true
width: 1800
height: 900

SplitView
{
    anchors.fill: parent
    orientation: Qt.Vertical
    SplitView {
        Layout.fillHeight: true
        SplitView {
            orientation: Qt.Vertical
            width:400
            Layout.minimumWidth: 400
            Layout.maximumWidth: 500

            Camera {
                id: cameraArea
                height: 400
                Layout.maximumHeight: 400
                Layout.minimumHeight: 300
            }
            List {
                id: listArea
            }
        }

        Bonder {
            id: mainArea
            Layout.fillWidth: true
        }

        Properties {
            id: propertiesArea
            Layout.minimumWidth: 300
            Layout.maximumWidth: 400
        }
    }
    Error {
        id: errorArea
        Layout.minimumHeight: 100
        height: 200
    }
}
}

Camera.qml

import QtQuick 2.5
Rectangle {
    color: "lightblue"
}

你必須設置的objectNameQML組件屬性來獲取一個有效的指針到您QObject因為T QObject::findChild(const QString &name = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const需要objectName不是ID

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM