корректно работает. Только при закрытии программы выводит сообщение: qrc:/main.qml:9: TypeError: Cannot call method 'someStr' of null
Как от этого избавится?
Ниже код простого примера:
main.cpp
int main() {
....
AppEngine appEngine;
engine.rootContext()->setContextProperty("app", &appEngine);
....
}
main.qml
import QtQuick 2.15
import QtQuick.Window 2.15
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
property string someStr: app.someStr()
}
appengine.h
#pragma once
#include <QObject>
class AppEngine : public QObject
{
Q_OBJECT
public:
explicit AppEngine(QObject *parent = nullptr);
Q_INVOKABLE QString someStr() const;
};
appengine.cpp
#include "appengine.h"
#include <QQmlEngine>
static bool registerType()
{
qmlRegisterType<AppEngine>("AppEngineModule", 12, 34, "AppEngine");
return true;
}
static const bool IS_REG_TYPE = registerType();
AppEngine::AppEngine(QObject *parent) : QObject(parent) { }
AppEngine::someStr() { return "someStr"; }
нашел вариант создания объекта в qml: import AppEngineModule 12.34 Window { width: 640 height: 480 visible: true title: qsTr("Hello World") AppEngine { id: app } ... }
Обсуждают сегодня