如何在 qt 中将单例传递给另一个类
How to pass a singleton to another class in qt
在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
的成员我有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;
}
DataloopWrapper::qmlInstance
是一个 函数,您需要调用它才能获得指向QObject
的指针。
对于要传递此对象的任何函数,您需要使其接受指向QObject
的指针(类型 QObject*
(,并且不要忘记调用 DataloopWrapper::qmlInstance
。
翻译成代码:
class QmlTranslator : public QObject
{
...
void loadLanguage(QString language, QObject* objDataloop);
...
};
...
qmlTranslator.loadLanguage(lang, DataloopWrapper::qmlInstance(aQMLEngineObjectPointer, aQJSEnginePointer));
相关文章:
- 如何使用PHP将上传到本地主机的一个html文件重定向到磁盘上的另一个html文档
- 这是一个有效的单例类吗?
- 使用 c++ / QT 创建器从另一个类中设置和获取单例变量
- 如何将变量从一个表单传递到另一个表单
- 将类实例和方法作为参数传递给C 中的另一个函数
- 如何从另一个Qt Widget表单类调用MainWindow类
- 如何将变量从一个 qt 表单传递到另一个表单 qt 形式
- 在C++中将文本从一个表单传递到另一个表单
- 如何在 qt 中将单例传递给另一个类
- 将一个方法作为参数传递给另一个方法,该方法本身将传递的方法传递给 std 线程
- 单击另一个小组件时将窗口小部件标记为未选中
- 如何通过将类的对象和成员函数传递给 c++ 中的另一个函数来调用类?
- 可以创建一个单例 c++ 来进行身份验证并使用对 Facebook API 的 HTTP 请求在墙上发布
- 另一个类上使用的单例模式
- 如何正确地创建一个单例对象并在C++中使用它
- c++, linux,如何将非静态方法从单例传递给pthread_create
- "Magic static" 在另一个翻译单元的静态销毁阶段引用时单例崩溃
- c++中的一个单例应用程序对象
- 可能使一个单例结构在c++ ?如何去做
- C++内联在一个单例中被忽略,并显示在我的探查器中.怎么会