В main.cpp
я создаю класс типа singleton для использования его в qml со следующей функцией:
qmlRegisterSingletonType<DataloopWrapper>("com.xpto.connector", 1, 0, "DataloopWrapper",&DataloopWrapper::qmlInstance);
немного вниз по main.cpp
я вызываю функцию другого объекта, где я хочу вызвать функцию из этого singleton
может быть что-то подобное qmlTranslator.loadLanguage(lang, DataloopWrapper::qmlInstance);
возможно?
Я объявляю QmlTranslator
класс следующим образом:
#ifndef QMLTRANSLATOR_H
#define QMLTRANSLATOR_H
#include <QObject>
#include <QTranslator>
#include <QQmlEngine>
#include <QGuiApplication>
class QmlTranslator : public QObject
{
Q_OBJECT
public:
QmlTranslator(QQmlEngine *engine, QGuiApplication *app);
Q_INVOKABLE void selectLanguage(QString language);
void InstallTranslator();
void loadLanguage(QString language, QObject*(QQmlEngine*,QJSEngine*) objDataloop);
virtual ~QmlTranslator();
signals:
void languageChanged();
private:
QTranslator *_translator;
QQmlEngine *_engine;
QGuiApplication *_app;
};
#endif // QMLTRANSLATOR_H
Я не нахожу способ передать DataloopWrapper::qmlInstance
в качестве аргумента.По крайней мере, это дает ошибку в void loadLanguage(QString language, QObject*(QQmlEngine*,QJSEngine*) objDataloop);
в определении qmlTranslator.
От общественности: члены DataloopWrapper
, у меня есть определение qmlInstance
, это так:
class DataloopWrapper : public QObject, public something::DataloopCBHandler,
public something::DataloopTransferCBHandler
{
Q_OBJECT
public:
explicit DataloopWrapper(QObject *parent = nullptr);
virtual ~DataloopWrapper();
static QObject *qmlInstance(QQmlEngine *engine, QJSEngine *scriptEngine)
{
Q_UNUSED(engine);
Q_UNUSED(scriptEngine);
return new DataloopWrapper;
}