Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. QML and Qt Quick
  4. Menu in Widget embedded QQuickView
QtWS25 Last Chance

Menu in Widget embedded QQuickView

Scheduled Pinned Locked Moved QML and Qt Quick
3 Posts 2 Posters 2.6k Views
  • 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.
  • B Offline
    B Offline
    Babalas
    wrote on last edited by
    #1

    I have a QQuickView inside a Window container in a QMainWindow created like this:
    @
    QQuickView* viewer = new QQuickView();
    QWidget* container = createWindowContainer(viewer, this);
    ...
    setCentralWidget(container);
    @

    In QML I then create a Menu and onClicked call menu.popup(). I end up with "void QWindow::setTransientParent(QWindow*) QQuickView(0x157afa0) must be a top level window." and the menu showing in the corner of my screen rather than where I clicked.

    1 Reply Last reply
    0
    • D Offline
      D Offline
      Dmitry.Sokolov
      wrote on last edited by
      #2

      You've provided not enough information. You'd better post the "Minimal Working Example":http://en.wikipedia.org/wiki/Minimal_Working_Example here.

      I hope "this post":http://blog.qt.digia.com/blog/2014/07/02/qt-weekly-16-qquickwidget/ will be useful.

      1 Reply Last reply
      0
      • B Offline
        B Offline
        Babalas
        wrote on last edited by
        #3

        As requested
        main.cpp
        @
        #include <QApplication>
        #include <QMainWindow>
        #include <QQuickView>

        int main(int argc, char *argv[])
        {
        QApplication app(argc, argv);

        QMainWindow mainWindow;
        QQuickView* viewer = new QQuickView();
        viewer->setResizeMode(QQuickView::SizeRootObjectToView);
        QWidget* container = QWidget::createWindowContainer(viewer, &mainWindow);
        container->setFocusPolicy(Qt::StrongFocus);
        viewer->setSource(QUrl(QStringLiteral("qrc:/main.qml")));
        
        mainWindow.setCentralWidget(container);
        mainWindow.show();
        
        return app.exec();
        

        }
        @

        main.qml
        @
        import QtQuick 2.2
        import QtQuick.Controls 1.2

        Rectangle {
        width: 1024
        height: 768

        Menu {
            id: menu
            title: "File"
            MenuItem { text: "One"}
            MenuItem { text: "Two"}
            MenuItem { text: "Three"}
        }
        
        MouseArea {
            anchors.fill: parent
            onClicked: menu.popup()
        }
        

        }
        @

        Outputs:
        void QWindow::setTransientParent(QWindow*) QQuickView(0x6a7270) must be a top level window.

        And menu ends up being placed at what looks like global screen space + offset.

        1 Reply Last reply
        0

        • Login

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