Я ищу самый простой и простой пример.
С моей стороны;
.h
public:
KTerminalDisplay(QQuickItem *parent = 0);
~KTerminalDisplay();
Q_INVOKABLE void setFontStyle(QString & s);
.cpp
void KTerminalDisplay::setFontStyle(QString & s){
m_fontStyle = QString(s);
}
Это хорошо работает к настоящему времени. Никакие проблемы. Вопрос; как я использую эту функцию в файле QML?
Для создания 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