我正在寻找最简单、最直接的例子。
对我来说;
。H
public:
KTerminalDisplay(QQuickItem *parent = 0);
~KTerminalDisplay();
Q_INVOKABLE void setFontStyle(QString & s);
.cpp
void KTerminalDisplay::setFontStyle(QString & s){
m_fontStyle = QString(s);
}
到目前为止,这工作正常。没有问题。问题是:如何在 QML 文件中使用此功能?
答案1
要使KTerminalDisplay
实例可以从 QML 访问,您必须在您的 中注册它main.cpp
。由于您期望父级是 QQuickItem,所以您的问题并不那么简单。查看终端应用程序,我可以提出以下技巧:
QQuickItem *item = view.rootObject();
KTerminalDisplay * display = (KTerminalDisplay *) item;
view.engine()->rootContext()->setContextProperty("kdisplay", display);
一旦注册,您就可以setFontStyle
从 QML 调用:
kdisplay.setFontStyle("foo")
笔记: 看使用上下文属性将 C++ 对象嵌入到 QML 中因为您可以将您的方法标记为一个插槽。
来源:http://developer.nokia.com/community/wiki/Calling_Qt_class_methods_from_QML