gpt4 book ai didi

c++ - 在 QML 错误 "Cannot Call Method ' x' of null 中调用 C++ 方法”

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:48:42 26 4
gpt4 key购买 nike

我在从 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();

}
}

主窗口模型.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";
}

main.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();
}

任何帮助将不胜感激,谢谢。

最佳答案

您需要先创建您的 MainWindowModel。

QML:

import Jane 1.0

...

MainWindowModel {
id: m_Model;
}

Button {
...
onClicked: m_OutputText.text = m_Model.getPluralization();
}

关于c++ - 在 QML 错误 "Cannot Call Method ' x' of null 中调用 C++ 方法”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18907880/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com