1212Fermer1214
Kevin KoflerLe 13/05/2010 à 01:29
squalyl (./1209) :
est ce que je pourrais avoir un exemple *simple* avec deux classes écrites à la main, l'une contenant un signal et l'autre un slot, et non basées sur des widgets, et un exemple d'appel?

class1.h:
#include <QObject>

class Class1 : public QObject {
  Q_OBJECT
  public:
    Class1(QObject *parent = 0) : QObject(parent) {}
    void foo(void);
  signals:
    void signal1(int x);
};


class1.cpp:
#include "class1.h"

void Class1::foo(void)
{
  emit signal1(123);
}


class2.h:
#include <QObject>

class Class2 : public QObject {
  Q_OBJECT
  public:
    Class2(QObject *parent = 0) : QObject(parent) {}
  public slots:
    void slot1(int x);
};


class2.cpp:
#include "class2.h"

void Class2::slot1(int x)
{
  Q_UNUSED(x);
}


main.cpp:
#include "class1.h"
#include "class2.h"
#include <QCoreApplication>

int main(int argc, char **argv)
{
  QCoreApplication *app = new QCoreApplication(argc, argv);
  Class1 *obj1 = new Class1();
  Class2 *obj2 = new Class2();
  obj2->connect(obj1, SIGNAL(signal1(int)), SLOT(slot1(int)));
  obj1->foo();
  delete obj1;
  delete obj2;
  delete app;
  return 0;
}