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 }