2

QML で C++ クラスからメソッドを呼び出すのが困難です。「null のメソッド 'x' を呼び出せません」というエラーが表示され続けます。これが私のコードです:

QML:

import QtQuick 2.0
import QtQuick.Controls 1.0
import QtQuick.Window 2.0
import Jane 1.0

ApplicationWindow
{
    property MainWindowModel m_Model

    ...


            Button {
                id: m_PluralizeButton
                text: "Pluralize"
                anchors.left: parent.left
                anchors.leftMargin: 10
                anchors.top: m_OutputRow.bottom
                anchors.topMargin: 10
                onClicked: m_OutputText.text = m_Model.getPluralization();

            }
        }

MainWindowModel.h

class MainWindowModel : public QObject
{
    Q_OBJECT
public:
    MainWindowModel();
    ~MainWindowModel() {}

    Q_INVOKABLE QString getPluralization() const;

private:

};

MainWindoModel.cpp

MainWindowModel::MainWindowModel() :
    QObject()
{
}

QString MainWindowModel::getPluralization() const
{
    return "Test";
}

メイン.cpp

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    // Need to register types prior to loading the file.
    qmlRegisterType<MainWindowModel>("Jane", 1, 0, "MainWindowModel");
    QQmlApplicationEngine engine(QUrl("qrc:/root/QML/MainWindowView.qml"));
    QObject* topLevel = engine.rootObjects().value(0);
    QQuickWindow* win = qobject_cast<QQuickWindow*>(topLevel);


    if (!win)
    {
        qWarning("Error: not a valid window.");
        return -1;
    }

    win->show();
    return a.exec();
}

どんな助けでも感謝します、ありがとう。

4

1 に答える 1

2

最初に MainWindowModel を作成する必要があります。

QML:

import Jane 1.0

...

MainWindowModel {
    id: m_Model;
}

Button {
    ...
    onClicked: m_OutputText.text = m_Model.getPluralization();
}
于 2013-09-20T02:35:40.933 に答える