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. How to register and access C++ class methods in QML

How to register and access C++ class methods in QML

Scheduled Pinned Locked Moved QML and Qt Quick
14 Posts 3 Posters 3.8k Views 2 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.
  • S Offline
    S Offline
    Sushma_MP
    wrote on last edited by
    #3

    there is no errors the thing is i am not able to access all methods which are present in my cpp class only test() is appearing in main.qml class

    raven-worxR 1 Reply Last reply
    0
    • S Sushma_MP

      there is no errors the thing is i am not able to access all methods which are present in my cpp class only test() is appearing in main.qml class

      raven-worxR Offline
      raven-worxR Offline
      raven-worx
      Moderators
      wrote on last edited by
      #4

      @Sushma_MP

      1. when it doesn't work, there is definitely an error/notice. Check the console.
      2. what do you mean with "appearing"? Do you mean QtCreator doesn't offer it in the auto-completion popup?

      --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
      If you have a question please use the forum so others can benefit from the solution in the future

      S 1 Reply Last reply
      0
      • raven-worxR raven-worx

        @Sushma_MP

        1. when it doesn't work, there is definitely an error/notice. Check the console.
        2. what do you mean with "appearing"? Do you mean QtCreator doesn't offer it in the auto-completion popup?
        S Offline
        S Offline
        Sushma_MP
        wrote on last edited by
        #5

        @raven-worx
        when it doesn't work, there is definitely an error/notice. Check the console.

        when we try to add new method try to access it in main.qml...like u said it is not appearing in auto-popup

        raven-worxR 1 Reply Last reply
        0
        • S Sushma_MP

          @raven-worx
          when it doesn't work, there is definitely an error/notice. Check the console.

          when we try to add new method try to access it in main.qml...like u said it is not appearing in auto-popup

          raven-worxR Offline
          raven-worxR Offline
          raven-worx
          Moderators
          wrote on last edited by
          #6

          @Sushma_MP
          i don't know exactly when QtCreator updates it's completion model.
          But closing and reopening the project should trigger it.

          --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
          If you have a question please use the forum so others can benefit from the solution in the future

          S 1 Reply Last reply
          0
          • raven-worxR raven-worx

            @Sushma_MP
            i don't know exactly when QtCreator updates it's completion model.
            But closing and reopening the project should trigger it.

            S Offline
            S Offline
            Sushma_MP
            wrote on last edited by
            #7

            @raven-worx
            how is it possible then...everytime we can't close and reopen Qt creator rite...is it a bug...??

            raven-worxR 1 Reply Last reply
            0
            • sneubertS Offline
              sneubertS Offline
              sneubert
              wrote on last edited by
              #8

              In Qt Creator did you try to call [Tools]->[QML/JS]->Reset Code Model, after you compiled your cpp class?

              1 Reply Last reply
              0
              • S Sushma_MP

                @raven-worx
                how is it possible then...everytime we can't close and reopen Qt creator rite...is it a bug...??

                raven-worxR Offline
                raven-worxR Offline
                raven-worx
                Moderators
                wrote on last edited by raven-worx
                #9

                @Sushma_MP said in How to register and acess cpp class methods in QML:

                how is it possible then...everytime we can't close and reopen Qt creator rite...is it a bug...??

                i wasn't talking about restarting the whole QtCreator process, but only close and reopen the project.
                The problem is, when is the right time to update the code-completion model?

                --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
                If you have a question please use the forum so others can benefit from the solution in the future

                1 Reply Last reply
                0
                • S Offline
                  S Offline
                  Sushma_MP
                  wrote on last edited by
                  #10

                  Hi ,

                  Actually i am facing another problem :
                  I created cpp class and registered in main.cpp and imported in main.qml
                  when i try to access that class in maim.qml i am getting as a invalid property .
                  my code is as fallow```
                  import QtQuick 2.4
                  import QtQuick.Controls 1.3
                  import QtQuick.Window 2.2
                  import QtQuick.Dialogs 1.2
                  import QtQuick 2.5
                  import QtGraphicalEffects 1.0
                  import com.songclass 1.0

                  ApplicationWindow {
                  flags: Qt.FramelessWindowHint

                  title: qsTr("Infotainment")
                  width: (Screen.width/2)+200
                  height: (Screen.height/2)
                  visible: true
                  modality: Qt.WindowModal
                  
                  selectsong{  
                  

                  here i get as invalid property with a red underlined for selectsong
                  }

                  MenuScreen{
                      id:menusrcn
                      visible: false
                  }
                  Settings{
                      id:settingScreen
                      visible: false
                  }
                  MusicVedio{
                      id:vedioScreen
                      visible: false
                  }
                  MediaPlay{
                      id:musicScreen
                      visible: false
                  }
                  Radio{
                      id:radioScreen
                      visible: false
                  }
                  
                  Rectangle{
                      id:main_rect
                      width: parent.width
                      height: parent.height
                      color: "#e9ebf8"
                      Image {
                          id: back_img
                          source: "qrc:/HomeScreen.png"
                          anchors.centerIn: parent
                      }
                  
                      Rectangle
                      {
                          id: welcome_rect
                          width: 250
                          height: 40
                          anchors.top: parent.top
                          anchors.topMargin: 100
                          anchors.horizontalCenter: parent.horizontalCenter
                          color: "transparent"
                          Text {
                              id: welcome_text
                              text: qsTr("L&T Car Infotainment")
                              color:"#fefcfd"
                              font.pixelSize: 36
                              font.family: "Courier"
                              font.bold: true
                              font.italic: true
                              anchors.centerIn: parent
                              style: Text.Sunken
                              styleColor: "#000000"
                          }
                      }
                  
                      Rectangle{
                          id: next_page_rect
                          width: parent.width/6
                          height: parent.height/12
                          color:"Transparent"
                          anchors.right: parent.right
                          anchors.bottom: parent.bottom
                          anchors.rightMargin: 15
                          anchors.bottomMargin: 8
                          Image {
                              id: next_image
                              source: "qrc:/Fwd_arrow.png"
                              width: parent.width
                              height: parent.height
                              smooth: true
                              fillMode: Image.PreserveAspectFit
                              antialiasing: true
                              MouseArea{
                                  id: next_page_rect_mousearea
                                  anchors.fill: parent
                                  onClicked: {
                                      menusrcn.visible= true
                                      main_rect.visible= false
                                  }
                              }
                          }
                      }
                  }
                  

                  }

                  raven-worxR 1 Reply Last reply
                  0
                  • S Sushma_MP

                    Hi ,

                    Actually i am facing another problem :
                    I created cpp class and registered in main.cpp and imported in main.qml
                    when i try to access that class in maim.qml i am getting as a invalid property .
                    my code is as fallow```
                    import QtQuick 2.4
                    import QtQuick.Controls 1.3
                    import QtQuick.Window 2.2
                    import QtQuick.Dialogs 1.2
                    import QtQuick 2.5
                    import QtGraphicalEffects 1.0
                    import com.songclass 1.0

                    ApplicationWindow {
                    flags: Qt.FramelessWindowHint

                    title: qsTr("Infotainment")
                    width: (Screen.width/2)+200
                    height: (Screen.height/2)
                    visible: true
                    modality: Qt.WindowModal
                    
                    selectsong{  
                    

                    here i get as invalid property with a red underlined for selectsong
                    }

                    MenuScreen{
                        id:menusrcn
                        visible: false
                    }
                    Settings{
                        id:settingScreen
                        visible: false
                    }
                    MusicVedio{
                        id:vedioScreen
                        visible: false
                    }
                    MediaPlay{
                        id:musicScreen
                        visible: false
                    }
                    Radio{
                        id:radioScreen
                        visible: false
                    }
                    
                    Rectangle{
                        id:main_rect
                        width: parent.width
                        height: parent.height
                        color: "#e9ebf8"
                        Image {
                            id: back_img
                            source: "qrc:/HomeScreen.png"
                            anchors.centerIn: parent
                        }
                    
                        Rectangle
                        {
                            id: welcome_rect
                            width: 250
                            height: 40
                            anchors.top: parent.top
                            anchors.topMargin: 100
                            anchors.horizontalCenter: parent.horizontalCenter
                            color: "transparent"
                            Text {
                                id: welcome_text
                                text: qsTr("L&T Car Infotainment")
                                color:"#fefcfd"
                                font.pixelSize: 36
                                font.family: "Courier"
                                font.bold: true
                                font.italic: true
                                anchors.centerIn: parent
                                style: Text.Sunken
                                styleColor: "#000000"
                            }
                        }
                    
                        Rectangle{
                            id: next_page_rect
                            width: parent.width/6
                            height: parent.height/12
                            color:"Transparent"
                            anchors.right: parent.right
                            anchors.bottom: parent.bottom
                            anchors.rightMargin: 15
                            anchors.bottomMargin: 8
                            Image {
                                id: next_image
                                source: "qrc:/Fwd_arrow.png"
                                width: parent.width
                                height: parent.height
                                smooth: true
                                fillMode: Image.PreserveAspectFit
                                antialiasing: true
                                MouseArea{
                                    id: next_page_rect_mousearea
                                    anchors.fill: parent
                                    onClicked: {
                                        menusrcn.visible= true
                                        main_rect.visible= false
                                    }
                                }
                            }
                        }
                    }
                    

                    }

                    raven-worxR Offline
                    raven-worxR Offline
                    raven-worx
                    Moderators
                    wrote on last edited by
                    #11

                    @Sushma_MP
                    selectsong is not a valid property of ApplicationWindow type.
                    QML types must start with an Uppercase-Letter to distinguish them from properties as you can see in your error.

                    --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
                    If you have a question please use the forum so others can benefit from the solution in the future

                    1 Reply Last reply
                    0
                    • S Offline
                      S Offline
                      Sushma_MP
                      wrote on last edited by
                      #12

                      ohh but selectsong is my cpp class name

                      raven-worxR 1 Reply Last reply
                      0
                      • S Offline
                        S Offline
                        Sushma_MP
                        wrote on last edited by
                        #13

                        thank you soo much i got the solution by taking it as uppercase letter as you said...

                        1 Reply Last reply
                        0
                        • S Sushma_MP

                          ohh but selectsong is my cpp class name

                          raven-worxR Offline
                          raven-worxR Offline
                          raven-worx
                          Moderators
                          wrote on last edited by
                          #14

                          @Sushma_MP said in How to register and acess cpp class methods in QML:

                          ohh but selectsong is my cpp class name

                          you can also leave the class name, but register it with a upper case name should also work.

                          --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
                          If you have a question please use the forum so others can benefit from the solution in the future

                          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