Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. General talk
  3. The Lounge
  4. adding QWidget to Quick based application
Forum Updated to NodeBB v4.3 + New Features

adding QWidget to Quick based application

Scheduled Pinned Locked Moved Solved The Lounge
13 Posts 8 Posters 2.8k Views 4 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.
  • mzimmersM mzimmers

    Hi all -

    I'm implementing a desktop app using QML. I finally ran across something available in a QWidget that doesn't seem to have a QML wrapper.

    I've done web searches, but haven't found anything on adding/using a QWidget class to QML code. I know that in years past, this was pretty much a non-starter, but I'm wondering whether there's anything in 6 that makes this easier.

    Thanks for any information...

    Axel SpoerlA Offline
    Axel SpoerlA Offline
    Axel Spoerl
    Moderators
    wrote on last edited by
    #2

    @mzimmers
    You may want to check the documentation of QQuickItemfor that purpose.

    Software Engineer
    The Qt Company, Oslo

    mzimmersM 1 Reply Last reply
    2
    • Axel SpoerlA Axel Spoerl

      @mzimmers
      You may want to check the documentation of QQuickItemfor that purpose.

      mzimmersM Offline
      mzimmersM Offline
      mzimmers
      wrote on last edited by mzimmers
      #3

      @Axel-Spoerl this looks like it's what I need. I've created a class:

      class DatePicker : public QQuickItem
      {
          Q_OBJECT
          QML_ELEMENT
          QCalendarWidget calendar;
          ...
      

      and registered it:

          qmlRegisterType<DatePicker>("DatePicker", 1, 0, "DatePicker");
      

      and I attempt to use it:

      Window {
          visible: true
          DatePicker {
              anchors.fill: parent
          }
      

      But nothing shows up. What am I missing?

      EDIT:

      I also gave it a size:

      DatePicker::DatePicker()
      {
          QSizeF size(300, 300);
          setSize(size);
      }
      

      Also, I needed to use QApplication instead of QGuiApplication, because the latter gave me a runtime error:

      QWidget: Cannot create a QWidget without QApplication
      

      I'd greatly prefer to use QGuiApplication; is this possible?

      Thanks...

      Christian EhrlicherC 1 Reply Last reply
      0
      • mzimmersM mzimmers

        @Axel-Spoerl this looks like it's what I need. I've created a class:

        class DatePicker : public QQuickItem
        {
            Q_OBJECT
            QML_ELEMENT
            QCalendarWidget calendar;
            ...
        

        and registered it:

            qmlRegisterType<DatePicker>("DatePicker", 1, 0, "DatePicker");
        

        and I attempt to use it:

        Window {
            visible: true
            DatePicker {
                anchors.fill: parent
            }
        

        But nothing shows up. What am I missing?

        EDIT:

        I also gave it a size:

        DatePicker::DatePicker()
        {
            QSizeF size(300, 300);
            setSize(size);
        }
        

        Also, I needed to use QApplication instead of QGuiApplication, because the latter gave me a runtime error:

        QWidget: Cannot create a QWidget without QApplication
        

        I'd greatly prefer to use QGuiApplication; is this possible?

        Thanks...

        Christian EhrlicherC Offline
        Christian EhrlicherC Offline
        Christian Ehrlicher
        Lifetime Qt Champion
        wrote on last edited by Christian Ehrlicher
        #4

        @mzimmers said in adding QWidget to Quick based application:

        I'd greatly prefer to use QGuiApplication; is this possible?

        Since you already found out that a QWidget needs a QApplication - no.

        Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
        Visit the Qt Academy at https://academy.qt.io/catalog

        mzimmersM 1 Reply Last reply
        1
        • Christian EhrlicherC Christian Ehrlicher

          @mzimmers said in adding QWidget to Quick based application:

          I'd greatly prefer to use QGuiApplication; is this possible?

          Since you already found out that a QWidget needs a QApplication - no.

          mzimmersM Offline
          mzimmersM Offline
          mzimmers
          wrote on last edited by
          #5

          @Christian-Ehrlicher OK, that's fine. I've modified my program to use QApplication, and in my QQuickItem c'tor, I've added a call to calendar.show().

          Now, the calendar appears, but in a separate window. I suppose this is expected, as I create it without a parent, which according to the docs, a nullptr parent causes the c'tor to create a (new) window.

          Given that I'm defining my Window in my Main.qml file, I'm not sure how to give the calendar the appropriate parent. Is there away to do this, or must I define my main window using a QQuickItem as well?

          Thanks...

          JoeCFDJ 1 Reply Last reply
          0
          • mzimmersM mzimmers

            @Christian-Ehrlicher OK, that's fine. I've modified my program to use QApplication, and in my QQuickItem c'tor, I've added a call to calendar.show().

            Now, the calendar appears, but in a separate window. I suppose this is expected, as I create it without a parent, which according to the docs, a nullptr parent causes the c'tor to create a (new) window.

            Given that I'm defining my Window in my Main.qml file, I'm not sure how to give the calendar the appropriate parent. Is there away to do this, or must I define my main window using a QQuickItem as well?

            Thanks...

            JoeCFDJ Offline
            JoeCFDJ Offline
            JoeCFD
            wrote on last edited by JoeCFD
            #6

            @mzimmers
            from @kkoehne here: https://forum.qt.io/topic/92859/how-to-embed-qwidget-into-qml/2
            It is only supported it the other way round: Embedding a Qt Quick scene in QWidgets, either through QQuickView, QQuickWidget, or QWidget::createWindowContainer().

            Ask @kkoehne about it. The post is old.

            1 Reply Last reply
            0
            • SGaistS Offline
              SGaistS Offline
              SGaist
              Lifetime Qt Champion
              wrote on last edited by
              #7

              Hi,

              KDAB has created the DeclarativeWidgets project to integrate widgets in QtQuick applications.

              Interested in AI ? www.idiap.ch
              Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

              mzimmersM 1 Reply Last reply
              1
              • SGaistS SGaist

                Hi,

                KDAB has created the DeclarativeWidgets project to integrate widgets in QtQuick applications.

                mzimmersM Offline
                mzimmersM Offline
                mzimmers
                wrote on last edited by
                #8

                @SGaist @JoeCFD thanks for the information.

                That KDAB project is huge, and it doesn't appear to have been updated recently (which might be OK).

                If this truly is such a major effort, I suppose I'm better off just implementing my own date picker QML component. I have to say that I'm a bit surprised that Qt doesn't have one.

                JonBJ 1 Reply Last reply
                0
                • mzimmersM mzimmers

                  @SGaist @JoeCFD thanks for the information.

                  That KDAB project is huge, and it doesn't appear to have been updated recently (which might be OK).

                  If this truly is such a major effort, I suppose I'm better off just implementing my own date picker QML component. I have to say that I'm a bit surprised that Qt doesn't have one.

                  JonBJ Offline
                  JonBJ Offline
                  JonB
                  wrote on last edited by JonB
                  #9

                  @mzimmers said in adding QWidget to Quick based application:

                  implementing my own date picker QML component. I have to say that I'm a bit surprised that Qt doesn't have one

                  Remember I know nothing about QML. Or whether "QtQuick" matters. But why aren't:

                  • https://doc.qt.io/qt-5/qml-qtquick-controls-calendar.html
                  • https://felgo.com/doc/felgo-datepicker/
                  • https://stackoverflow.com/questions/74930721/how-to-build-a-scrollable-date-picker-in-qml

                  etc. "QML date pickers"? Hmm, maybe "QML component" isn't any good for "QtQuick" ....

                  mzimmersM B 2 Replies Last reply
                  0
                  • JonBJ JonB

                    @mzimmers said in adding QWidget to Quick based application:

                    implementing my own date picker QML component. I have to say that I'm a bit surprised that Qt doesn't have one

                    Remember I know nothing about QML. Or whether "QtQuick" matters. But why aren't:

                    • https://doc.qt.io/qt-5/qml-qtquick-controls-calendar.html
                    • https://felgo.com/doc/felgo-datepicker/
                    • https://stackoverflow.com/questions/74930721/how-to-build-a-scrollable-date-picker-in-qml

                    etc. "QML date pickers"? Hmm, maybe "QML component" isn't any good for "QtQuick" ....

                    mzimmersM Offline
                    mzimmersM Offline
                    mzimmers
                    wrote on last edited by
                    #10

                    @JonB thanks for the update - the last time I looked, Qt 6 didn't have the QML calendar (at least it wasn't documented in the normal location). Now, it appears that it does. I can probably use that and the MonthGrid, and a few other things to make my own (essentially what the SO article you referenced does). The felgo example doesn't look right for me -- I need a real calendar.

                    I'll start playing with the tools I'm given...thanks again.

                    1 Reply Last reply
                    0
                    • JonBJ JonB

                      @mzimmers said in adding QWidget to Quick based application:

                      implementing my own date picker QML component. I have to say that I'm a bit surprised that Qt doesn't have one

                      Remember I know nothing about QML. Or whether "QtQuick" matters. But why aren't:

                      • https://doc.qt.io/qt-5/qml-qtquick-controls-calendar.html
                      • https://felgo.com/doc/felgo-datepicker/
                      • https://stackoverflow.com/questions/74930721/how-to-build-a-scrollable-date-picker-in-qml

                      etc. "QML date pickers"? Hmm, maybe "QML component" isn't any good for "QtQuick" ....

                      B Offline
                      B Offline
                      Bob64
                      wrote on last edited by Bob64
                      #11

                      @JonB your first bullet point is the closest to anything officially supported by Qt. However it is in Quick Controls 1 which got deprecated towards the end of Qt 5 and was removed entirely from Qt 6. In Qt 5 we were encouraged to move to Quick Controls 2 but it lacked a lot of basic functionality. It never offered even provided a tree view in Qt 5 for example - that only appeared relatively recently in Qt 6.

                      Edit: For some reason mzimmers' reply wasn't visible when I wrote this. It looks like Qt 6 does have a QML calendar after all - possibly a recent addition.

                      mzimmersM 1 Reply Last reply
                      1
                      • B Bob64

                        @JonB your first bullet point is the closest to anything officially supported by Qt. However it is in Quick Controls 1 which got deprecated towards the end of Qt 5 and was removed entirely from Qt 6. In Qt 5 we were encouraged to move to Quick Controls 2 but it lacked a lot of basic functionality. It never offered even provided a tree view in Qt 5 for example - that only appeared relatively recently in Qt 6.

                        Edit: For some reason mzimmers' reply wasn't visible when I wrote this. It looks like Qt 6 does have a QML calendar after all - possibly a recent addition.

                        mzimmersM Offline
                        mzimmersM Offline
                        mzimmers
                        wrote on last edited by
                        #12

                        @Bob64 said in adding QWidget to Quick based application:

                        It looks like Qt 6 does have a QML calendar after all - possibly a recent addition.

                        Yeah - I think originally it was part of the labs stuff, then it went away, then (recently) it reappeared as part of "mainstream" Qt.

                        1 Reply Last reply
                        0
                        • mzimmersM mzimmers has marked this topic as solved on
                        • B Offline
                          B Offline
                          baburaoz558
                          wrote on last edited by
                          #13

                          Perhaps a preview toggle would be useful as to prevent clutter while choosing layout while still having the option to see the result before confirming. I would recommend using icons instead of words for the preview toggle and confirmation button as the idea's theme is about order and aesthetics.

                          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