Widget opisany za pomocą qml nie widzi rodzica



  • #edit
    Po stronie C++ ustawiłem rozciagani Widget'a.
    Jakoś to wygląda, chociaż wolałbym kontrolować to QML'em.

    Cześć!
    Po stronie C++ stworzyłem wrapper okienka.
    CentralWidget jest opisany za pomocą QML, który niestety nie widzi swojego rodzica (null).
    Rodzic jest mi potrzebny w celu pobrania jego szerokości i wysokości (chcę aby wypełniał całe okienko)

    Kod:

    MainWindow::MainWindow(
                QUrl workspaceQmlSource
            ):
                m_engine(new QQmlEngine(this)),
                m_workspaceWidget(new QQuickWidget(m_engine, this))
            {
                auto layout = new QVBoxLayout();
                layout->setAlignment(Qt::AlignTop);
                layout->setSpacing(0);
                layout->setMargin(0);
    
                m_workspaceWidget->setSource(workspaceQmlSource);
                layout->addWidget(m_workspaceWidget);
    
                auto centralWidget = new QWidget(this);
                centralWidget->setObjectName("centralWidget");
                centralWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
                centralWidget->setLayout(layout);
                centralWidget->setContentsMargins(0, 0, 0, 0);
                setCentralWidget(centralWidget);
            }
    

    Qml:

    import QtQuick 2.7
    import QtQuick.Window 2.3
    
    Rectangle
    {
        id: workspace
        //anchors.fill: parent
        width: 300
        height: Screen.height / 1.2
        /*minimumWidth: Screen.width / 1.3
        minimumHeight: Screen.height / 1.3*/
        visible: true
        color: "red"
    
        Component.onCompleted:
        {
            console.log("parent: " + parent);
        }
    }
    

    Output konsoli:

    qml: parent: null
    

    Są 2 widgety, gdyż pojawi się później jeszcze jeden równoległy do workspaceWidget widget opisujący titleBar.
    Mógłbym wysłać do qml cały obiekt MainWindow i pobrać dane za pomocą Q_PROPERTY, jednak to rozwiązanie wydaje mi się dosyć słabe.
    Jak to poprawić?


  • Moderators

    Twój Rectangle jest root objektem w strukturze QMLa, więc nie ma rodzica - to normalne.

    Albo użyj QMLa do całego swojego GUI, albo dodaj objekty, których potrzebujesz do contextProperty w silniku QML.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.