C++ class exposed to QML error in fashion TypeError: Property '…' of object is not a function

后端 未结 3 1976
北荒
北荒 2021-01-18 05:37

I\'ve successfully exposed a C++ class to QML. It is registered and found in Qt Creator. It\'s purpose is to connect to a database, as shown in following code:



        
相关标签:
3条回答
  • 2021-01-18 05:38

    Be aware in case of an error some lines earlier in the same .js file can lead to this problem. The following code will not be executed.

    0 讨论(0)
  • 2021-01-18 05:51

    You must first create the object you want in QML code and then use the function:

    your QML Code:

    import QtQuick 2.0
    import QSqlDatabase 1.0
    
    Rectangle {
        id: ueMenuButton
    
        QSqlDatabase {
            id: uePosDatabase
        }
    .
    .
    .
        MouseArea
        {
            id: ueClickArea
            antialiasing: true
            anchors.fill: parent
    
            onClicked: {
                console.log(uePosDatabase.isConnected())
            }
        }
    }
    
    0 讨论(0)
  • 2021-01-18 05:57

    You have this error because you have declared the property isConnected in C++ but you're calling it from QML in the wrong way: uePosDatabase.isConnected is the correct way, not uePosDatabase.isConnected().

    If you want to call the function isConnected() you should change its name to differate it from the property, like getIsConnected(). Given your property declaration, you neither need to call this function directly nor you need to make it callable from QML with the Q_INVOKABLE macro.

    0 讨论(0)
提交回复
热议问题