public static class Session {}
C++ (Qt)class A : public QObject{public: static A &instance() { static A obj; return obj; } signals: void mysignal(); private: A() {} Q_DISABLE_COPY(A)};...connect(&A::instance(), SIGNAL(mysignal()), SLOT(someslot()));
#ifndef TEST1_H#define TEST1_H#include <QObject>#include <QtCore>class A : public QObject{public: static A &instance() { static A obj; return obj; } void test(){ emit mysignal(10); // сигнал пошлет 10 }signals: void mysignal(int n);private: A() {} Q_DISABLE_COPY(A);};#endif // TEST1_H
#ifndef TEST2_H#define TEST2_H#include <QObject>#include <QDebug>#include "test1.h";class test2 : public QObject{ Q_OBJECTpublic: explicit test2(QObject *parent = 0); void run();signals: public slots: void forSignal(int n); // Слот который примет значение 10 и выведет в QDebug();};#endif // TEST2_H
#include "test2.h"#include "test1.h"#include <QObject>test2::test2(QObject *parent) : QObject(parent){}void test2::run(){ connect(&A::instance(),SIGNAL(mysignal(int)),this,SLOT(forSignal(int))); // тут возникает ошибка Object::connect: No such signal QObject::mysignal(int) in test2.cpp:10}void test2::forSignal(int n){ qDebug() << n;}
#include <QtCore/QCoreApplication>#include <QtCore>#include <QDebug>#include "singleton.h"#include "test1.h"#include "test2.h"class A;int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); test2 * ttt = new test2(); ttt->run(); // тут я запускаю метод который делает connect между слотом и сигналом. return a.exec();}
class A : public QObject{ Q_OBJECT ............