[Qt-interest] Sending derived objects through queued connections

Akos Polster akos at pipacs.com
Wed Jun 2 23:22:03 CEST 2010


Hi,

is it possible to send derived objects via signals (over queued
connections), and be able to restore them on the receiver side. How
should my base and derived classes look like? Or any alternatives you
can recommend.

Naive example:

class Base {};
class Derived: public Base {};

class Emitter {
signals:
  void bang(const Base &b);
};

class Receiver {
protected slots:
  void onBang(const Base &b) {
    if (magic_convert(b from Base to Derived)) {
      // Bingo! Got a Derived object as signal parameter
    }
  }
};

main() {
  Emitter e;
  Base b;
  Derived d;
  Receiver r;
  connect(&e, SIGNAL(bang(const Base &)), &r, SLOT(onBang(const Base
&)), QueuedConnection);
  emit e.bang(d);
  // run event loop
}

Thanks

 ~ Akos.



More information about the Qt-interest-old mailing list