Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt
  • Unsolved
Collapse
qtws26_logo

The Qt Event of the Year: Qt World Summit 2026

Save Your Spot >
Brand Logo
  1. Home
  2. International
  3. Polish
  4. Widget opisany za pomocą qml nie widzi rodzica
Qt 6.12 LTS is out! See what's new in the release blog

Widget opisany za pomocą qml nie widzi rodzica

Scheduled Pinned Locked Moved Solved Polish
qml parentwidget
2 Posts 2 Posters 1.7k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    Montjet
    wrote on last edited by Montjet
    #1

    #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ć?

    1 Reply Last reply
    0
    • sierdzioS Offline
      sierdzioS Offline
      sierdzio
      Moderators
      wrote on last edited by
      #2

      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.

      (Z(:^

      1 Reply Last reply
      2

      • Login

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt
      • Unsolved