0

プロジェクトでデータベース操作を行っています。関数 updateIntoTestResult() を持つファイル「dataBaseMaster」があります。このようにコンテキストを設定して 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

updateIntoTestResultはスロットまたは ではないため、qml システムには認識されません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 に答える