在main.cpp
中,我正在创建一个单例类型的类,以通过以下功能在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
作为参数的方法。至少它在qmlTranslator定义的void loadLanguage(QString language, QObject*(QQmlEngine*,QJSEngine*) objDataloop);
中给出了错误。
在公开场合:DataloopWrapper
i的成员拥有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;
}
答案 0 :(得分:1)
Request(response.urljoin(url), ...)
是函数,您需要调用以获得指向DataloopWrapper::qmlInstance
的指针。
对于要传递此对象的任何函数,都需要使其接受指向QObject
(类型为QObject
)的指针,并且不要忘记调用 QObject*
。
翻译成代码:
DataloopWrapper::qmlInstance