Örnek
Qt 3.3 ile şöyle yaparız. İleriki sürümlerde halen aynı şekilde yapılıp yapılmadığından emin değilim.
Elimizde bir Sender olsun
Örnek - farklı thread'ler
Elimizde şöyle bir kod olsun
Qt 3.3 ile şöyle yaparız. İleriki sürümlerde halen aynı şekilde yapılıp yapılmadığından emin değilim.
Elimizde bir Sender olsun
class Sender : public QObject
{
Q_OBJECT
public:
explicit Sender(QObject *parent = 0);
void fireSignal();
signals:
void foo(const QString& arg);
};
fireSignal metodu şöyle olsunSender::Sender(QObject *parent) :
QObject(parent)
{
}
void Sender::fireSignal()
{
emit foo("This a message sender is sending to receiver.");
}
Elimizde bir Receiver olsun.#include <qobject.h>
class Receiver : public QObject
{
Q_OBJECT
public:
explicit Receiver(QObject *parent = 0);
public slots:
void bar(const QString& arg);
};
Sender ve Receiver nesnelerini bağlayıp tetiklemek için şöyle yaparız.Sender sender;
Receiver receiver;
QObject::connect(&sender, SIGNAL(foo(QString)), &receiver, SLOT(bar(QString)));
sender.fireSignal();
Elimizde şöyle bir kod olsun
connect(object1, &SomeObject::signal1, object2, &SomeOtherObject::signal2);
Main thread'deki signal, bir başka thread'deki nesnenin slot'ına bağlanmış durumda. object1 signal() yapınca, object2'nin event kuyruğuna yeni bir event eklenir ve thread2 tarafından çalıştırılır. Açıklaması şöyleWhen object1 emits signal1, an event is posted to the new thread; the thread to which object2 was moved.
When the new thread processes its event loop and the event for signal1 it will execute object2's slot, signal2. This is not on the main thread.
Hiç yorum yok:
Yorum Gönder