File indexing completed on 2024-05-05 05:41:36

0001 #include <QtCore/QObject>
0002 
0003 class MyObj;
0004 class MyObj : public QObject
0005 {
0006     Q_OBJECT
0007 public:
0008     void foo();
0009     int bar() { return 1; }
0010 signals:
0011     void mySig();
0012     virtual void myVirtualSig();
0013 public Q_SLOTS:
0014     void mySlot();
0015 };
0016 void test()
0017 {
0018     auto *o = new MyObj();
0019     o->connect(o, &MyObj::mySig, o, &MyObj::mySlot); // OK
0020     o->connect(o, &MyObj::foo, o, &MyObj::mySlot); // Warning
0021     o->connect(o, SIGNAL(foo()), o, SLOT(mySlot())); // OK, only PMF is checked
0022 }
0023 
0024 class MyObj2 : public QObject
0025 {
0026     Q_OBJECT
0027 public:
0028     void foo();
0029 signals:
0030     void mySig();
0031 };
0032 
0033 void test2()
0034 {
0035     auto *o2 = new MyObj2();
0036     o2->connect(o2, &MyObj2::mySig, o2, &MyObj2::foo); // OK
0037     QObject::connect(o2, &MyObj2::mySig, o2, &MyObj2::foo); // OK
0038     QObject::connect(o2, &MyObj2::foo, o2, &MyObj2::foo); // OK
0039 }
0040 
0041 class MyDerivedObj : public MyObj
0042 {
0043     Q_OBJECT
0044 public:
0045     void myVirtualSig() override;
0046 };
0047 
0048 void test3()
0049 {
0050     auto *o = new MyDerivedObj();
0051     QObject::connect(o, &MyDerivedObj::myVirtualSig, o, &MyObj::foo); // Warn, overridden but not a signal now
0052     QObject::connect(o, &MyObj::myVirtualSig, o, &MyObj::foo); // OK
0053 }