0

我正在我的项目中进行数据库操作。我有一个文件“dataBaseMaster”,它有一个函数 updateIntoTestResult()。我通过设置这样的上下文创建了一个 dbMasterObject

qml->setContextProperty("dbMasterObject", dbMasterObject);

但是当我尝试在我的 main.qml 中调用这个 updateIntoTestResult() 方法时,我收到了这样的错误

TypeError: Result of expression 'dbMasterObject.updateIntoTestResult' [undefined] is not a function

数据库管理员.hpp

  class DatabaseMaster : public QObject
{
public:
      Q_OBJECT
public:
    void updateIntoTestResult(int id, int result);

};

数据库大师.cpp

void DatabaseMaster::updateIntoTestResult(int id, int result) {

QSqlDatabase database = QSqlDatabase::database();

QSqlQuery query(database);

query.prepare("update "+TEST_RESULT_MASTER+" set "+RESULT+" = :"+RESULT+" where "+TEST_ID+"= :"+TEST_ID+";");

query.bindValue(":"+RESULT, result);
query.bindValue(":"+TEST_ID, id);

query.exec();

调用 main.qml

dbMasterObject.updateIntoTestResult(MICROPHONE_ID, TEST_STATE_PASS)

请帮帮我,为什么我会收到此错误,而我已正确声明该方法。

提前致谢..!!

4

1 回答 1

5

updateIntoTestResultqml 系统不知道,因为它不是插槽或Q_INVOKABLE.

简单修复 - 插入Q_INVOKABLE

class DatabaseMaster : public QObject
{
public:
    Q_OBJECT
public:
    Q_INVOKABLE void updateIntoTestResult(int id, int result);
};
于 2013-09-04T11:02:15.023 回答