32 #ifdef QT_NO_NARROWING_CONVERSIONS_IN_CONNECT
33 #undef QT_NO_NARROWING_CONVERSIONS_IN_CONNECT
37 #include <QtTest/private/qpropertytesthelper_p.h>
38 #include <QStringListModel>
39 #include <QAbstractEventDispatcher>
40 #include <QScopedValueRollback>
53 #include <QWaitCondition>
54 #include <QScopedPointer>
55 #if QT_CONFIG(process)
59 #ifdef QT_BUILD_INTERNAL
60 #include <private/qobject_p.h>
72 void connectSlotsByName();
73 void connectSignalsToSignalsWithDefaultArguments();
76 void qobject_castTemplate();
78 void connectDisconnectNotify_data();
79 void connectDisconnectNotify();
80 void connectDisconnectNotifyPMF();
81 void disconnectNotify_receiverDestroyed();
82 void disconnectNotify_metaObjConnection();
83 void connectNotify_connectSlotsByName();
84 void connectDisconnectNotify_shadowing();
85 void connectReferenceToIncompleteTypes();
86 void emitInDefinedOrder();
88 void streamCustomTypes();
91 void threadSignalEmissionCrash();
96 void declareInterface();
97 void qpointerResetBeforeDestroyedSignal();
98 void childDeletesItsSibling();
99 void dynamicProperties();
100 void floatProperty();
101 void qrealProperty();
103 void recursiveSignalEmission();
104 void signalBlocking();
105 void blockingQueuedConnection();
107 void installEventFilter();
108 void deleteSelfInSlot();
109 void disconnectSelfInSlotAndDeleteAfterEmit();
110 void dumpObjectInfo();
111 void dumpObjectTree();
112 void connectToSender();
113 void qobjectConstCast();
114 void uniqConnection();
115 void uniqConnectionPtr();
117 void deleteQObjectWhenDeletingEvent();
119 void isSignalConnected();
120 void isSignalConnectedAfterDisconnection();
121 void qMetaObjectConnect();
122 void qMetaObjectDisconnectOne();
124 void connectByMetaMethods();
125 void connectByMetaMethodSlotInsteadOfSignal();
126 void connectConstructorByMetaMethod();
127 void disconnectByMetaMethod();
128 void disconnectNotSignalMetaMethod();
129 void autoConnectionBehavior();
130 void baseDestroyed();
131 void pointerConnect();
132 void pointerDisconnect();
133 void emitInDefinedOrderPointer();
134 void customTypesPointer();
136 void connectToStaticCxx0x();
137 void connectCxx0xTypeMatching();
138 void connectCxx17Noexcept();
139 void connectConvert();
140 void connectWithReference();
141 void connectManyArguments();
142 void connectForwardDeclare();
143 void connectNoDefaultConstructorArg();
144 void returnValue_data();
146 void returnValue2_data();
148 void connectVirtualSlots();
149 void connectSlotsVMIClass();
150 void connectPrivateSlots();
151 void connectFunctorArgDifference();
152 void connectFunctorOverloads();
153 void connectFunctorQueued();
154 void connectFunctorWithContext();
155 void connectFunctorWithContextUnique();
156 void connectFunctorDeadlock();
157 void connectFunctorMoveOnly();
158 void connectStaticSlotWithObject();
159 void disconnectDoesNotLeakFunctor();
160 void contextDoesNotLeakFunctor();
162 void connectWarnings();
164 void qmlConnectToQObjectReceiver();
166 void deleteLaterInAboutToBlockHandler();
167 void mutableFunctor();
168 void checkArgumentsForNarrowing();
170 void functorReferencesConnection();
171 void disconnectDisconnects();
172 void singleShotConnection();
173 void objectNameBinding();
174 void emitToDestroyedClass();
196 if (recursionCount++ < 100)
228 Q_INVOKABLE void invoke3(
int hinz = 0,
int kunz = 0)
278 default:
return false;
294 static void playWithObjects()
301 const int objectCount = 1024;
303 for (
int i = 0;
i < objectCount; ++
i) {
309 void tst_QObject::disconnect()
420 void emitSignalManyParams(
int i1,
int i2,
int i3,
QString string,
bool onoff,
bool dummy) {
emit signalManyParams(i1, i2, i3,
string, onoff,
dummy); }
474 void tst_QObject::connectSlotsByName()
482 QTest::ignoreMessage(
QtWarningMsg,
"QMetaObject::connectSlotsByName: Connecting slot on_Sender_signalManyParams() with the first of the following compatible signals: QList(\"signalManyParams(int,int,int,QString,bool)\", \"signalManyParams(int,int,int,QString,bool,bool)\")");
486 sender.emitSignalNoParams();
490 sender.emitSignalWithParams(0);
494 sender.emitSignalWithParams(0,
"string");
498 sender.emitSignalManyParams(1, 2, 3,
"string",
true);
499 sender.emitSignalManyParams(1, 2, 3,
"string",
true,
false);
505 sender.emitSignalManyParams2(1, 2, 3,
"string",
true);
509 sender.emitSignalLoopBack();
521 void tst_QObject::qobject_castTemplate()
524 QVERIFY(!::qobject_cast<QObject*>(
o.data()));
527 QVERIFY(::qobject_cast<SenderObject*>(
o.data()));
528 QVERIFY(::qobject_cast<QObject*>(
o.data()));
529 QVERIFY(!::qobject_cast<ReceiverObject*>(
o.data()));
532 void tst_QObject::findChildren()
553 emptyname.setObjectName(
"");
608 tl =
o.findChildren<
QTimer*>(
"t1");
611 tl =
o.findChildren<
QTimer*>(
"t121");
618 tl =
o.findChildren<
QTimer*>(
"o12");
679 tl =
o.findChildren<
QTimer *>(
"t1");
802 void tst_QObject::connectDisconnectNotify_data()
804 QTest::addColumn<QString>(
"a_signal");
805 QTest::addColumn<QString>(
"a_slot");
816 void tst_QObject::connectDisconnectNotify()
825 int signalIndx = ((
SenderObject &)
s).metaObject()->indexOfSignal(
839 QVERIFY(
s.disconnectedSignals.isEmpty());
844 QCOMPARE(
s.disconnectedSignals.size(), 1);
849 s.clearNotifications();
854 QVERIFY(
s.disconnectedSignals.isEmpty());
858 QCOMPARE(
s.disconnectedSignals.size(), 1);
863 s.clearNotifications();
867 QVERIFY(
s.disconnectedSignals.isEmpty());
871 QCOMPARE(
s.disconnectedSignals.size(), 1);
876 s.clearNotifications();
882 QCOMPARE(
s.disconnectedSignals.size(), 1);
887 s.clearNotifications();
891 QVERIFY(
s.disconnectedSignals.isEmpty());
896 QCOMPARE(
s.disconnectedSignals.size(), 1);
913 void tst_QObject::connectReferenceToIncompleteTypes() {
920 static void connectDisconnectNotifyTestSlot() {}
922 void tst_QObject::connectDisconnectNotifyPMF()
934 QVERIFY(
s.disconnectedSignals.isEmpty());
939 QCOMPARE(
s.disconnectedSignals.size(), 1);
944 s.clearNotifications();
949 QVERIFY(
s.disconnectedSignals.isEmpty());
954 QCOMPARE(
s.disconnectedSignals.size(), 1);
959 s.clearNotifications();
967 QVERIFY(!
s.disconnectedSignals.isEmpty());
970 s.clearNotifications();
972 connectDisconnectNotifyTestSlot));
975 QVERIFY(
s.disconnectedSignals.isEmpty());
978 void tst_QObject::disconnectNotify_receiverDestroyed()
987 QCOMPARE(
s.disconnectedSignals.count(), 1);
990 s.disconnectedSignals.clear();
998 QCOMPARE(
s.disconnectedSignals.count(), 1);
1001 s.disconnectedSignals.clear();
1008 QCOMPARE(
s.disconnectedSignals.count(), 1);
1012 void tst_QObject::disconnectNotify_metaObjConnection()
1023 QCOMPARE(
s.disconnectedSignals.count(), 1);
1026 QCOMPARE(
s.disconnectedSignals.count(), 1);
1053 void createNotifyChild(
const char *
name)
1062 createNotifyChild(
"foo");
1063 createNotifyChild(
"bar");
1064 createNotifyChild(
"baz");
1073 void tst_QObject::connectNotify_connectSlotsByName()
1079 QVERIFY(
o->connectedSignals.isEmpty());
1080 QVERIFY(
o->disconnectedSignals.isEmpty());
1086 QCOMPARE(
o->connectedSignals.size(), 1);
1088 QVERIFY(
o->disconnectedSignals.isEmpty());
1102 void tst_QObject::connectDisconnectNotify_shadowing()
1108 QVERIFY(shadowedSignal1 != redefinedSignal1);
1109 int slot1Index =
s.metaObject()->indexOfSlot(
"slot1()");
1115 const char *warning =
"QMetaObject::indexOfSignal: signal signal1() from "
1116 "ConnectByNameNotifySenderObject redefined in "
1117 "ConnectDisconnectNotifyShadowObject";
1122 QCOMPARE(
s.connectedSignals.at(0), redefinedSignal1);
1123 QVERIFY(
s.disconnectedSignals.isEmpty());
1130 QCOMPARE(
s.disconnectedSignals.size(), 1);
1131 QCOMPARE(
s.disconnectedSignals.at(0), redefinedSignal1);
1135 s.clearNotifications();
1138 QCOMPARE(
s.connectedSignals.at(0), shadowedSignal1);
1139 QVERIFY(
s.disconnectedSignals.isEmpty());
1143 QCOMPARE(
s.disconnectedSignals.size(), 1);
1144 QCOMPARE(
s.disconnectedSignals.at(0), shadowedSignal1);
1148 s.clearNotifications();
1151 QCOMPARE(
s.connectedSignals.at(0), redefinedSignal1);
1152 QVERIFY(
s.disconnectedSignals.isEmpty());
1156 QCOMPARE(
s.disconnectedSignals.size(), 1);
1157 QCOMPARE(
s.disconnectedSignals.at(0), redefinedSignal1);
1219 void tst_QObject::emitInDefinedOrder()
1420 psender3->emitSignal1();
1424 static int instanceCount = 0;
1437 { ++instanceCount; playWithObjects(); }
1439 { ++instanceCount; playWithObjects(); }
1471 {
emit signal1(ct); }
1491 void tst_QObject::customTypes()
1508 int idx = qRegisterMetaType<CustomType>(
"CustomType");
1524 QCOMPARE(qRegisterMetaType<CustomType>(
"CustomType"),
idx);
1531 void tst_QObject::streamCustomTypes()
1535 int idx = qRegisterMetaType<CustomType>(
"CustomType");
1585 : m_alpha(
Alpha0), m_priority(
High), m_number(0), m_custom(0), m_float(42)
1632 void tst_QObject::threadSignalEmissionCrash()
1634 int loopCount = 1000;
1635 for (
int i = 0;
i < loopCount; ++
i) {
1660 void tst_QObject::thread()
1670 QVERIFY(
object.thread() !=
nullptr);
1671 QCOMPARE(
object.thread(), currentThread);
1779 void tst_QObject::thread0()
1782 object->moveToThread(0);
1800 void tst_QObject::moveToThread()
1809 object->moveToThread(0);
1812 object->moveToThread(currentThread);
1815 object->moveToThread(0);
1833 object->moveToThread(&thread);
1859 object->moveToThread(&thread);
1884 child->startTimer(90);
1885 object->startTimer(100);
1889 object->moveToThread(&thread);
1942 void tst_QObject::property()
1949 QVERIFY(
mo->indexOfProperty(
"alpha") != -1);
1950 property =
mo->property(
mo->indexOfProperty(
"alpha"));
1953 QCOMPARE(
property.userType(), QMetaType::fromType<PropertyObject::Alpha>().id());
1967 QVERIFY(
mo->indexOfProperty(
"number") != -1);
1969 object.setNumber(24);
1976 QVERIFY(
mo->indexOfProperty(
"string") != -1);
1978 object.setString(
"String1");
1984 const int idx =
mo->indexOfProperty(
"variant");
1990 object.setVariant(variant1);
1998 QVERIFY(
mo->indexOfProperty(
"custom") != -1);
1999 property =
mo->property(
mo->indexOfProperty(
"custom"));
2004 qRegisterMetaType<CustomType*>();
2009 QVariant customVariant =
object.property(
"custom");
2017 property =
mo->property(
mo->indexOfProperty(
"custom"));
2026 customVariant =
object.property(
"custom");
2031 QVERIFY(
mo->indexOfProperty(
"priority") != -1);
2032 property =
mo->property(
mo->indexOfProperty(
"priority"));
2035 QCOMPARE(
property.userType(), QMetaType::fromType<PropertyObject::Priority>().id());
2037 var =
object.property(
"priority");
2050 int priorityMetaTypeId = qRegisterMetaType<PropertyObject::Priority>(
"PropertyObject::Priority");
2052 QVERIFY(
mo->indexOfProperty(
"priority") != -1);
2053 property =
mo->property(
mo->indexOfProperty(
"priority"));
2059 var =
object.property(
"priority");
2072 var =
object.property(
"priority");
2076 object.setProperty(
"priority",
var);
2080 QVERIFY(
mo->indexOfProperty(
"customString") != -1);
2082 object.setCustomString(
"String1");
2089 void tst_QObject::metamethod()
2096 QVERIFY(
m.methodSignature() ==
"invoke1()");
2103 QVERIFY(
m.methodSignature() ==
"sinvoke1()");
2110 QVERIFY(
m.methodSignature() ==
"invoke2()");
2117 QVERIFY(
m.methodSignature() ==
"sinvoke2()");
2124 QVERIFY(
m.methodSignature() ==
"invoke3()");
2131 QVERIFY(
m.methodSignature() ==
"sinvoke3()");
2138 QVERIFY(
m.methodSignature() ==
"signal5()");
2145 QVERIFY(
m.methodSignature() ==
"aPublicSlot()");
2152 QCOMPARE(
m.parameterNames().count(), 0);
2153 QCOMPARE(
m.parameterTypes().count(), 0);
2156 QCOMPARE(
m.parameterNames().count(), 1);
2157 QCOMPARE(
m.parameterTypes().count(), 1);
2159 QVERIFY(
m.parameterNames().at(0).isEmpty());
2162 QCOMPARE(
m.parameterNames().count(), 2);
2163 QCOMPARE(
m.parameterTypes().count(), 2);
2187 void tst_QObject::namespaces()
2230 void tst_QObject::senderTest()
2236 &receiver,
SLOT(rememberSender()));
2238 &receiver,
SLOT(rememberSender()));
2245 sender.metaObject()->indexOfSignal(
"theSignal()"));
2250 sender.metaObject()->indexOfSignal(
"anotherSignal()"));
2258 receiver,
SLOT(rememberSender()),
2264 &thread,
SLOT(quit()),
2276 sender->metaObject()->indexOfSignal(
"theSignal()"));
2288 &receiver,
SLOT(deleteAndRememberSender()));
2300 receiver,
SLOT(deleteAndRememberSender()),
2306 &thread,
SLOT(quit()),
2340 #define Bleh_iid "com.qtest.bleh"
2350 int rtti()
const override {
return 42; }
2358 int rtti()
const override {
return 43; }
2361 void tst_QObject::declareInterface()
2372 bar = qobject_cast<Foo::Bar *>(&bleh);
2374 Foo::Bleh *
b = qobject_cast<Foo::Bleh *>(&bleh);
2390 inline void otherObjectDestroyed()
2394 void tst_QObject::qpointerResetBeforeDestroyedSignal()
2425 void tst_QObject::connectSignalsToSignalsWithDefaultArguments()
2431 o.emitTheSecondSignal();
2433 o.result =
"Not called";
2434 o.emitTheOriginalSignal();
2439 void tst_QObject::receivers()
2444 int receivers(
const char*
signal)
const
2462 template <
typename T>
class Template { };
2551 void tst_QObject::normalize()
2560 SIGNAL(uintPointerSignal(
unsigned int *)),
2564 SLOT(uintPointerSlot(
unsigned int *))));
2567 SIGNAL(constUintPointerSignal(
const uint *)),
2568 SLOT(constUintPointerSlot(
const uint *))));
2570 SIGNAL(constUintPointerSignal(
const unsigned int *)),
2571 SLOT(constUintPointerSlot(
const uint *))));
2573 SIGNAL(constUintPointerSignal(
const uint *)),
2574 SLOT(constUintPointerSlot(
const unsigned int *))));
2580 SIGNAL(ulongPointerSignal(
unsigned long *)),
2584 SLOT(ulongPointerSlot(
unsigned long *))));
2588 SLOT(constUlongPointerSlot(
const ulong *))));
2590 SIGNAL(constUlongPointerSignal(
const unsigned long *)),
2591 SLOT(constUlongPointerSlot(
const ulong *))));
2594 SLOT(constUlongPointerSlot(
const unsigned long *))));
2636 SLOT(classPointerSlot(
class Class *))));
2639 SLOT(classPointerSlot(
class Class *))));
2645 SLOT(enumPointerSlot(
enum Enum *))));
2648 SLOT(enumPointerSlot(
enum Enum *))));
2654 SIGNAL(constStructPointerSignal(
const struct Struct *)),
2655 SLOT(constStructPointerSlot(
const struct Struct *))));
2658 SLOT(constStructPointerSlot(
const struct Struct *))));
2660 SIGNAL(constStructPointerSignal(
const struct Struct *)),
2661 SLOT(constStructPointerSlot(
const Struct *))));
2663 SIGNAL(constClassPointerSignal(
const class Class *)),
2664 SLOT(constClassPointerSlot(
const class Class *))));
2667 SLOT(constClassPointerSlot(
const class Class *))));
2669 SIGNAL(constClassPointerSignal(
const class Class *)),
2670 SLOT(constClassPointerSlot(
const Class *))));
2672 SIGNAL(constEnumPointerSignal(
const enum Enum *)),
2673 SLOT(constEnumPointerSlot(
const enum Enum *))));
2675 SIGNAL(constEnumPointerSignal(
const Enum *)),
2676 SLOT(constEnumPointerSlot(
const enum Enum *))));
2678 SIGNAL(constEnumPointerSignal(
const enum Enum *)),
2679 SLOT(constEnumPointerSlot(
const Enum *))));
2682 SIGNAL(constStructPointerSignal(
struct Struct const *)),
2683 SLOT(constStructPointerSlot(
struct Struct const *))));
2686 SLOT(constStructPointerSlot(
struct Struct const *))));
2688 SIGNAL(constStructPointerSignal(
struct Struct const *)),
2689 SLOT(constStructPointerSlot(
Struct const *))));
2691 SIGNAL(constClassPointerSignal(
class Class const *)),
2692 SLOT(constClassPointerSlot(
class Class const *))));
2695 SLOT(constClassPointerSlot(
class Class const *))));
2697 SIGNAL(constClassPointerSignal(
class Class const *)),
2698 SLOT(constClassPointerSlot(
Class const *))));
2700 SIGNAL(constEnumPointerSignal(
enum Enum const *)),
2701 SLOT(constEnumPointerSlot(
enum Enum const *))));
2703 SIGNAL(constEnumPointerSignal(
Enum const *)),
2704 SLOT(constEnumPointerSlot(
enum Enum const *))));
2706 SIGNAL(constEnumPointerSignal(
enum Enum const *)),
2707 SLOT(constEnumPointerSlot(
Enum const *))));
2710 SIGNAL(constStructPointerConstPointerSignal(
const struct Struct *
const *)),
2711 SLOT(constStructPointerConstPointerSlot(
const struct Struct *
const *))));
2713 SIGNAL(constStructPointerConstPointerSignal(
const Struct *
const *)),
2714 SLOT(constStructPointerConstPointerSlot(
const struct Struct *
const *))));
2716 SIGNAL(constStructPointerConstPointerSignal(
const struct Struct *
const *)),
2717 SLOT(constStructPointerConstPointerSlot(
const Struct *
const *))));
2719 SIGNAL(constClassPointerConstPointerSignal(
const class Class *
const *)),
2720 SLOT(constClassPointerConstPointerSlot(
const class Class *
const *))));
2722 SIGNAL(constClassPointerConstPointerSignal(
const Class *
const *)),
2723 SLOT(constClassPointerConstPointerSlot(
const class Class *
const *))));
2725 SIGNAL(constClassPointerConstPointerSignal(
const class Class *
const *)),
2726 SLOT(constClassPointerConstPointerSlot(
const Class *
const *))));
2728 SIGNAL(constEnumPointerConstPointerSignal(
const enum Enum *
const *)),
2729 SLOT(constEnumPointerConstPointerSlot(
const enum Enum *
const *))));
2731 SIGNAL(constEnumPointerConstPointerSignal(
const Enum *
const *)),
2732 SLOT(constEnumPointerConstPointerSlot(
const enum Enum *
const *))));
2734 SIGNAL(constEnumPointerConstPointerSignal(
const enum Enum *
const *)),
2735 SLOT(constEnumPointerConstPointerSlot(
const Enum *
const *))));
2738 SIGNAL(constStructPointerConstPointerSignal(
struct Struct const *
const *)),
2739 SLOT(constStructPointerConstPointerSlot(
struct Struct const *
const *))));
2741 SIGNAL(constStructPointerConstPointerSignal(
Struct const *
const *)),
2742 SLOT(constStructPointerConstPointerSlot(
struct Struct const *
const *))));
2744 SIGNAL(constStructPointerConstPointerSignal(
struct Struct const *
const *)),
2745 SLOT(constStructPointerConstPointerSlot(
Struct const *
const *))));
2747 SIGNAL(constClassPointerConstPointerSignal(
class Class const *
const *)),
2748 SLOT(constClassPointerConstPointerSlot(
class Class const *
const *))));
2750 SIGNAL(constClassPointerConstPointerSignal(
Class const *
const *)),
2751 SLOT(constClassPointerConstPointerSlot(
class Class const *
const *))));
2753 SIGNAL(constClassPointerConstPointerSignal(
class Class const *
const *)),
2754 SLOT(constClassPointerConstPointerSlot(
Class const *
const *))));
2756 SIGNAL(constEnumPointerConstPointerSignal(
enum Enum const *
const *)),
2757 SLOT(constEnumPointerConstPointerSlot(
enum Enum const *
const *))));
2759 SIGNAL(constEnumPointerConstPointerSignal(
Enum const *
const *)),
2760 SLOT(constEnumPointerConstPointerSlot(
enum Enum const *
const *))));
2762 SIGNAL(constEnumPointerConstPointerSignal(
enum Enum const *
const *)),
2763 SLOT(constEnumPointerConstPointerSlot(
Enum const *
const *))));
2766 SIGNAL(unsignedintSignal(
unsigned int)),
2767 SLOT(unsignedintSlot(
unsigned int))));
2769 SIGNAL(unsignedSignal(
unsigned)),
2770 SLOT(unsignedSlot(
unsigned))));
2772 SIGNAL(unsignedSignal(
unsigned)),
2775 SIGNAL(unsignedlongSignal(
unsigned long)),
2776 SLOT(unsignedlongSlot(
unsigned long))));
2781 SIGNAL(unsignedlongintSignal(
unsigned long int)),
2782 SLOT(unsignedlongintSlot(
unsigned long int))));
2784 SIGNAL(unsignedshortSignal(
unsigned short)),
2785 SLOT(unsignedshortSlot(
unsigned short))));
2787 SIGNAL(unsignedcharSignal(
unsigned char)),
2788 SLOT(unsignedcharSlot(
unsigned char))));
2863 SLOT(typePointerConstRefSlot(
Class*
const&))));
2866 SLOT(typePointerConstRefSlot(
Class*))));
2869 SLOT(typePointerConstRefSlot(
Class*
const&))));
2872 SLOT(typePointerConstRefSlot(
Class*))));
2883 " NormalizeObject::constTemplateSignal1(Template<int>) --> NormalizeObject::constTemplateSlot3(Template<const int>)");
2900 void tst_QObject::childDeletesItsSibling()
2905 child->setParent(commonParent);
2906 delete commonParent;
2911 void tst_QObject::floatProperty()
2914 const int idx =
obj.metaObject()->indexOfProperty(
"myFloat");
2923 QCOMPARE(qvariant_cast<float>(
v), 128.0f);
2926 void tst_QObject::qrealProperty()
2929 const int idx =
obj.metaObject()->indexOfProperty(
"myQReal");
2938 QCOMPARE(
v.userType(), qMetaTypeId<qreal>());
2939 QCOMPARE(qvariant_cast<qreal>(
v), 128.0);
2943 QCOMPARE(
v.userType(), qMetaTypeId<qreal>());
2944 QCOMPARE(qvariant_cast<qreal>(
v), 127.0);
2962 void tst_QObject::dynamicProperties()
2966 QVERIFY(
obj.dynamicPropertyNames().isEmpty());
2970 QVERIFY(
obj.changedDynamicProperties.isEmpty());
2973 QVERIFY(!
obj.setProperty(
"number",
"invalid string"));
2974 QVERIFY(
obj.changedDynamicProperties.isEmpty());
2977 QVERIFY(!
obj.setProperty(
"myuserproperty",
"Hello"));
2978 QCOMPARE(
obj.changedDynamicProperties.count(), 1);
2981 QVERIFY(!
obj.setProperty(
"myuserproperty",
"Hello"));
2982 QCOMPARE(
obj.changedDynamicProperties.count(), 1);
2984 QCOMPARE(
obj.property(
"myuserproperty").type(), QVariant::String);
2991 obj.changedDynamicProperties.clear();
2993 QCOMPARE(
obj.changedDynamicProperties.count(), 1);
2995 QCOMPARE(
obj.property(
"myuserproperty").type(), QVariant::ByteArray);
2999 obj.changedDynamicProperties.clear();
3002 QCOMPARE(
obj.changedDynamicProperties.count(), 1);
3004 obj.changedDynamicProperties.clear();
3006 QVERIFY(
obj.property(
"myuserproperty").isNull());
3008 QVERIFY(
obj.dynamicPropertyNames().isEmpty());
3011 void tst_QObject::recursiveSignalEmission()
3013 #if !QT_CONFIG(process)
3014 QSKIP(
"No qprocess support", SkipAll);
3021 QVERIFY(proc.waitForFinished());
3022 QCOMPARE(proc.exitStatus(), QProcess::NormalExit);
3027 void tst_QObject::signalBlocking()
3051 void tst_QObject::blockingQueuedConnection()
3109 void tst_QObject::childEvents()
3193 void tst_QObject::installEventFilter()
3226 object.removeEventFilter(&
spy);
3229 object.installEventFilter(&
spy);
3266 void tst_QObject::deleteSelfInSlot()
3293 SLOT(relaySignalAndProcessEvents()),
3343 void tst_QObject::disconnectSelfInSlotAndDeleteAfterEmit()
3349 sender.emitSignal1AfterRecursion();
3358 SLOT(disconnectSelf()),
3381 SLOT(relaySignalAndProcessEvents()),
3385 SLOT(disconnectSelf()),
3404 void tst_QObject::dumpObjectInfo()
3417 void tst_QObject::dumpObjectTree()
3431 const char *
const output[] = {
3437 for (
const char *
line : output)
3459 void tst_QObject::connectToSender()
3474 void tst_QObject::qobjectConstCast()
3481 QVERIFY(qobject_cast<FooObject *>(ptr));
3482 QVERIFY(qobject_cast<const FooObject *>(cptr));
3485 void tst_QObject::uniqConnection()
3545 void tst_QObject::uniqConnectionPtr()
3614 void tst_QObject::interfaceIid()
3622 void tst_QObject::deleteQObjectWhenDeletingEvent()
3627 struct MyEvent :
public QEvent
3679 void tst_QObject::overloads()
3752 void tst_QObject::isSignalConnected()
3757 #ifdef QT_BUILD_INTERNAL
3779 #ifdef QT_BUILD_INTERNAL
3809 #ifdef QT_BUILD_INTERNAL
3829 #ifdef QT_BUILD_INTERNAL
3859 void tst_QObject::isSignalConnectedAfterDisconnection()
3865 QVERIFY(!
o.isSignalConnected(sig00));
3867 QVERIFY(
o.isSignalConnected(sig00));
3869 QVERIFY(!
o.isSignalConnected(sig00));
3872 QVERIFY(!
o.isSignalConnected(sig69));
3874 QVERIFY(
o.isSignalConnected(sig69));
3876 QVERIFY(!
o.isSignalConnected(sig69));
3881 QVERIFY(
o.isSignalConnected(sig00));
3884 QVERIFY(!
o.isSignalConnected(sig00));
3890 QVERIFY(
o.isSignalConnected(sig00));
3891 QVERIFY(
o.isSignalConnected(sig01));
3892 QVERIFY(
o.isSignalConnected(sig69));
3894 QVERIFY(
o.isSignalConnected(sig00));
3895 QVERIFY(
o.isSignalConnected(sig01));
3896 QVERIFY(!
o.isSignalConnected(sig69));
3898 QVERIFY(!
o.isSignalConnected(sig00));
3899 QVERIFY(
o.isSignalConnected(sig01));
3900 QVERIFY(!
o.isSignalConnected(sig69));
3902 QVERIFY(!
o.isSignalConnected(sig00));
3903 QVERIFY(
o.isSignalConnected(sig01));
3904 QVERIFY(
o.isSignalConnected(sig69));
3906 QVERIFY(!
o.isSignalConnected(sig00));
3907 QVERIFY(!
o.isSignalConnected(sig01));
3908 QVERIFY(
o.isSignalConnected(sig69));
3911 void tst_QObject::qMetaObjectConnect()
3915 int slot1Index, slot2Index, slot3Index;
3922 int signal1Index =
s.metaObject()->indexOfSignal(
"signal1()");
3923 int signal3Index =
s.metaObject()->indexOfSignal(
"signal3()");
3924 slot1Index =
r1.metaObject()->indexOfSlot(
"slot1()");
3925 slot2Index =
r1.metaObject()->indexOfSlot(
"slot2()");
3926 slot3Index =
r1.metaObject()->indexOfSlot(
"slot3()");
3987 void *
args[] = { 0 , 0 };
4012 #define SIGNAL_INDEX(S) obj1.metaObject()->indexOfSignal(QMetaObject::normalizedSignature(#S))
4054 void tst_QObject::qMetaObjectDisconnectOne()
4059 int signal1Index =
s.metaObject()->indexOfSignal(
"signal1()");
4060 int signal3Index =
s.metaObject()->indexOfSignal(
"signal3()");
4061 int slot1Index =
r1.metaObject()->indexOfSlot(
"slot1()");
4062 int slot2Index =
r1.metaObject()->indexOfSlot(
"slot2()");
4135 void tst_QObject::sameName()
4165 void tst_QObject::connectByMetaMethods()
4185 void tst_QObject::connectByMetaMethodSlotInsteadOfSignal()
4211 void tst_QObject::connectConstructorByMetaMethod()
4218 const QMetaObject cmeta = Constructable::staticMetaObject;
4224 QVERIFY( constructorIndx != -1 );
4240 void tst_QObject::disconnectByMetaMethod()
4246 QMetaMethod signal1 =
s.metaObject()->method(
s.metaObject()->indexOfMethod(
"signal1()"));
4247 QMetaMethod signal2 =
s.metaObject()->method(
s.metaObject()->indexOfMethod(
"signal2()"));
4248 QMetaMethod signal3 =
s.metaObject()->method(
s.metaObject()->indexOfMethod(
"signal3()"));
4333 void tst_QObject::disconnectNotSignalMetaMethod()
4341 s.metaObject()->indexOfMethod(
"aPublicSlot()"));
4361 void tst_QObject::autoConnectionBehavior()
4376 emitThread1.start();
4377 QVERIFY(emitThread1.wait(30000));
4386 emitThread1.start();
4387 QVERIFY(emitThread1.wait(30000));
4412 emitThread2.start();
4413 QVERIFY(emitThread2.wait(30000));
4415 receiverThread.
start();
4430 { fooList <<
"a" <<
"b"; }
4441 fooList <<
"c" <<
"d";
4445 static void processEvents()
4447 qApp->processEvents();
4450 void tst_QObject::baseDestroyed()
4466 void tst_QObject::pointerConnect()
4481 "Signal connection failed most likely due to failing comparison of pointers to member "
4482 "functions caused by problems with -reduce-relocations on this platform.");
4538 void tst_QObject::pointerDisconnect()
4637 void tst_QObject::emitInDefinedOrderPointer()
4698 void tst_QObject::customTypesPointer()
4718 int idx = qRegisterMetaType<CustomType>(
"CustomType");
4733 QCOMPARE(qRegisterMetaType<CustomType>(
"CustomType"),
idx);
4755 void tst_QObject::connectCxx0x()
4788 void tst_QObject::connectToStaticCxx0x()
4810 typedef void (*fptr)();
4881 void signal(
short&,
short,
long long,
short);
4885 void tst_QObject::connectCxx0xTypeMatching()
5010 void tst_QObject::connectCxx17Noexcept()
5052 void tst_QObject::connectConvert()
5093 void tst_QObject::connectWithReference()
5100 o.boolRef(b1,
false);
5101 o.stringRef(
s1,
s2);
5104 o.boolPtr(&b1,
false);
5105 o.stringPtr(&
s1,
s2);
5113 o.boolRef(b1,
false);
5114 o.stringRef(
s1,
s2);
5118 o.boolPtr(&b1,
true);
5119 o.stringPtr(&
s1,
s3);
5157 #define MANYARGUMENT_COMPARE(L) QCOMPARE(L, QString(#L))
5266 void tst_QObject::connectManyArguments()
5291 emit ob.signal6(
"a",
"b",
"c",
"d",
"e",
"f");
5334 void tst_QObject::connectForwardDeclare()
5359 void tst_QObject::connectNoDefaultConstructorArg()
5423 void tst_QObject::returnValue_data()
5425 QTest::addColumn<bool>(
"isBlockingQueued");
5431 void tst_QObject::returnValue()
5435 QFETCH(
bool, isBlockingQueued);
5439 if (isBlockingQueued) {
5451 emit r.returnVoid(45);
5472 if (!isBlockingQueued) {
5502 emit r.returnVoid(48);
5506 if (!isBlockingQueued) {
5534 if (!isBlockingQueued) {
5558 emit r.returnVoid(48);
5598 if (isBlockingQueued) {
5604 void tst_QObject::returnValue2_data()
5605 { returnValue_data(); }
5608 void tst_QObject::returnValue2()
5612 QFETCH(
bool, isBlockingQueued);
5616 if (isBlockingQueued) {
5650 if (!isBlockingQueued) {
5673 emit r.returnVoid(48);
5696 if (isBlockingQueued) {
5726 void tst_QObject::connectVirtualSlots()
5794 void tst_QObject::connectSlotsVMIClass()
5886 obj.lastCalled.clear();
5908 obj.lastCalled.clear();
5930 obj.lastCalled.clear();
5963 #ifndef QT_BUILD_INTERNAL
5964 void tst_QObject::connectPrivateSlots()
5965 {
QSKIP(
"Needs QT_BUILD_INTERNAL");}
5967 class ConnectToPrivateSlotPrivate;
5969 class ConnectToPrivateSlot :
public QObject {
5972 ConnectToPrivateSlot();
5974 Q_DECLARE_PRIVATE(ConnectToPrivateSlot)
5979 Q_DECLARE_PUBLIC(ConnectToPrivateSlot)
5983 void thisIsAPrivateSlot() {
5987 void thisIsAPrivateSlotWithArg(
const QVariant &
v) {
5993 ConnectToPrivateSlot::ConnectToPrivateSlot():
QObject(*new ConnectToPrivateSlotPrivate) {}
5996 Q_D(ConnectToPrivateSlot);
5997 d->receivedCount = 0;
6017 void tst_QObject::connectPrivateSlots()
6021 ConnectToPrivateSlot
o;
6024 sender.signal7(777,
QLatin1String(
"check that deleting the object properly disconnected"));
6039 void tst_QObject::connectFunctorArgDifference()
6081 void tst_QObject::connectFunctorQueued()
6104 void tst_QObject::connectFunctorWithContext()
6195 m_statusAwake(statusAwake),
6196 m_statusAboutToBlock(statusAboutToBlock),
6223 abouttoblock =
nullptr;
6240 QCOMPARE(*m_statusAboutToBlock, 2);
6249 int *m_statusAboutToBlock;
6250 int m_aboutToBlocks;
6255 void tst_QObject::deleteLaterInAboutToBlockHandler()
6257 int statusAwake = 1;
6258 int statusAboutToBlock = 1;
6270 void tst_QObject::connectFunctorWithContextUnique()
6280 QTest::ignoreMessage(
QtWarningMsg,
"QObject::connect(SenderObject, ReceiverObject): unique connections require a pointer to member function of a QObject subclass");
6291 : m_objectToDisconnect(objectToDisconnect)
6307 QObject *m_objectToDisconnect;
6310 void tst_QObject::connectFunctorDeadlock()
6318 void tst_QObject::connectFunctorMoveOnly()
6320 struct MoveOnlyFunctor {
6322 MoveOnlyFunctor(
int *status) : status(status) {}
6323 MoveOnlyFunctor(MoveOnlyFunctor &&
o) : status(
o.status) {
o.status =
nullptr; };
6340 obj.signal7(7888,
"Hello");
6359 static int s_static_slot_checker = 1;
6368 void tst_QObject::connectStaticSlotWithObject()
6378 QCOMPARE(s_static_slot_checker, 1);
6380 QCOMPARE(s_static_slot_checker, 2);
6382 s_static_slot_checker = 1;
6387 QCOMPARE(s_static_slot_checker, 1);
6389 QCOMPARE(s_static_slot_checker, 1);
6407 Q_ASSERT(!
"Should not be called because the non-const one should");
6410 template<
typename T1,
typename T2,
typename T3,
typename T4>
6419 Q_ASSERT(!
"Should not be called because it is protected");
6434 using ComplexFunctor::operator();
6437 Q_ASSERT(!
"Should not be called because it is private");
6456 template<
typename Functor,
typename Signal>
6465 obj.signal_iiS(3,4,
"5");
6466 obj.signal_dd(6.6,7.7);
6467 obj.signal_ddS(8.8,9.9,
"10");
6469 obj.signal_SSSS(
"12",
"13",
"14",
"15");
6470 obj.signal_iiSS(16, 17,
"18",
"19");
6471 obj.signal_VV(20,21);
6477 void tst_QObject::connectFunctorOverloads()
6479 #if defined (Q_COMPILER_VARIADIC_TEMPLATES)
6513 QSKIP(
"Does not compile without C++11 variadic template");
6530 static int countedStructObjectsCount = 0;
6544 void tst_QObject::disconnectDoesNotLeakFunctor()
6546 QCOMPARE(countedStructObjectsCount, 0);
6552 QCOMPARE(countedStructObjectsCount, 1);
6556 QCOMPARE(countedStructObjectsCount, 2);
6558 QCOMPARE(countedStructObjectsCount, 1);
6560 QCOMPARE(countedStructObjectsCount, 0);
6562 QCOMPARE(countedStructObjectsCount, 0);
6569 QCOMPARE(countedStructObjectsCount, 1);
6573 QCOMPARE(countedStructObjectsCount, 2);
6575 QCOMPARE(countedStructObjectsCount, 1);
6577 QCOMPARE(countedStructObjectsCount, 0);
6579 QCOMPARE(countedStructObjectsCount, 0);
6584 QCOMPARE(countedStructObjectsCount, 1);
6591 QCOMPARE(countedStructObjectsCount, 2);
6596 QCOMPARE(countedStructObjectsCount, 1);
6598 QCOMPARE(countedStructObjectsCount, 1);
6600 QCOMPARE(countedStructObjectsCount, 0);
6602 QCOMPARE(countedStructObjectsCount, 0);
6605 QCOMPARE(countedStructObjectsCount, 1);
6610 QCOMPARE(countedStructObjectsCount, 2);
6612 QCOMPARE(countedStructObjectsCount, 1);
6614 QCOMPARE(countedStructObjectsCount, 0);
6620 QCOMPARE(countedStructObjectsCount, 1);
6622 QCOMPARE(countedStructObjectsCount, 0);
6624 QCOMPARE(countedStructObjectsCount, 0);
6630 QCOMPARE(countedStructObjectsCount, 1);
6634 QCOMPARE(countedStructObjectsCount, 0);
6636 QCOMPARE(countedStructObjectsCount, 0);
6641 QCOMPARE(countedStructObjectsCount, 1);
6643 QCOMPARE(countedStructObjectsCount, 0);
6648 QCOMPARE(countedStructObjectsCount, 1);
6651 QCOMPARE(countedStructObjectsCount, 0);
6654 QCOMPARE(countedStructObjectsCount, 1);
6659 QCOMPARE(countedStructObjectsCount, 2);
6661 QCOMPARE(countedStructObjectsCount, 1);
6663 QCOMPARE(countedStructObjectsCount, 0);
6666 void tst_QObject::contextDoesNotLeakFunctor()
6668 QCOMPARE(countedStructObjectsCount, 0);
6680 QCOMPARE(countedStructObjectsCount, 1);
6682 QCOMPARE(countedStructObjectsCount, 0);
6684 QCOMPARE(countedStructObjectsCount, 0);
6686 QCOMPARE(countedStructObjectsCount, 0);
6694 QCOMPARE(countedStructObjectsCount, 1);
6697 QCOMPARE(countedStructObjectsCount, 2);
6703 QCOMPARE(countedStructObjectsCount, 1);
6705 QCOMPARE(countedStructObjectsCount, 0);
6707 QCOMPARE(countedStructObjectsCount, 0);
6712 QCOMPARE(countedStructObjectsCount, 1);
6716 QCOMPARE(countedStructObjectsCount, 2);
6720 QCOMPARE(countedStructObjectsCount, 1);
6722 QCOMPARE(countedStructObjectsCount, 0);
6729 void tst_QObject::connectBase()
6760 void tst_QObject::connectWarnings()
6802 void tst_QObject::qmlConnect()
6804 #ifdef QT_BUILD_INTERNAL
6807 receiver->
magic = receiver;
6827 QSKIP(
"Needs QT_BUILD_INTERNAL");
6831 void tst_QObject::qmlConnectToQObjectReceiver()
6833 #ifdef QT_BUILD_INTERNAL
6837 slotObject->
magic = slotObject;
6854 QSKIP(
"Needs QT_BUILD_INTERNAL");
6858 #ifndef QT_NO_EXCEPTIONS
6878 #ifndef QT_NO_EXCEPTIONS
6896 #ifndef QT_NO_EXCEPTIONS
6913 void tst_QObject::exceptions()
6915 #ifndef QT_NO_EXCEPTIONS
6920 QCOMPARE(countedStructObjectsCount, 0);
6930 QFAIL(
"Exception not thrown?");
6934 QCOMPARE(countedStructObjectsCount, 0);
6938 QCOMPARE(countedStructObjectsCount, 0);
6948 QFAIL(
"Exception not thrown?");
6952 QCOMPARE(countedStructObjectsCount, 0);
6956 QCOMPARE(countedStructObjectsCount, 0);
6966 QFAIL(
"Exception not thrown?");
6970 QCOMPARE(countedStructObjectsCount, 1);
6972 QCOMPARE(countedStructObjectsCount, 0);
6979 class ParentObject :
public QObject {
6991 QFAIL(
"Exception not thrown");
6994 QFAIL(
"Wrong exception thrown");
7005 QFAIL(
"Exception not thrown");
7008 QFAIL(
"Wrong exception thrown");
7019 QFAIL(
"Exception not thrown");
7022 QFAIL(
"Wrong exception thrown");
7029 QSKIP(
"Needs exceptions");
7040 void tst_QObject::mutableFunctor()
7052 void tst_QObject::checkArgumentsForNarrowing()
7056 #if defined(Q_CC_GNU) && !defined(Q_CC_CLANG) && !defined(Q_CC_INTEL)
7057 #define Q_CC_EXACTLY_GCC Q_CC_GNU
7060 enum UnscopedEnum { UnscopedEnumV1 = INT_MAX, UnscopedEnumV2 };
7061 enum SignedUnscopedEnum { SignedUnscopedEnumV1 = INT_MIN, SignedUnscopedEnumV2 = INT_MAX };
7063 static constexpr
bool IsUnscopedEnumSigned = std::is_signed_v<std::underlying_type_t<UnscopedEnum>>;
7065 #define NARROWS_IF(x, y, test) static_assert((QtPrivate::AreArgumentsConvertibleWithoutNarrowingBase<x, y>::value) != (test))
7066 #define FITS_IF(x, y, test) static_assert((QtPrivate::AreArgumentsConvertibleWithoutNarrowingBase<x, y>::value) == (test))
7067 #define NARROWS(x, y) NARROWS_IF(x, y, true)
7068 #define FITS(x, y) FITS_IF(x, y, true)
7070 static_assert(
sizeof(UnscopedEnum) <=
sizeof(
int));
7071 static_assert(
sizeof(SignedUnscopedEnum) <=
sizeof(
int));
7077 #if !defined(Q_CC_EXACTLY_GCC) || Q_CC_EXACTLY_GCC >= 900
7101 NARROWS(
long double,
long long);
7107 FITS(
float,
double);
7108 FITS(
float,
long double);
7113 #if defined(Q_CC_EXACTLY_GCC) && (Q_CC_EXACTLY_GCC < 1100)
7114 NARROWS_IF(
long double,
double,
sizeof(
long double) >
sizeof(
double));
7118 FITS(
double,
long double);
7144 NARROWS(
long long,
long double);
7149 NARROWS(UnscopedEnum,
double);
7150 NARROWS(UnscopedEnum,
long double);
7152 NARROWS(SignedUnscopedEnum,
float);
7153 NARROWS(SignedUnscopedEnum,
double);
7154 NARROWS(SignedUnscopedEnum,
long double);
7160 FITS(
signed char,
signed char);
7161 FITS(
signed char,
short);
7162 FITS(
signed char,
int);
7163 FITS(
signed char,
long);
7164 FITS(
signed char,
long long);
7165 FITS(
unsigned char,
unsigned char);
7166 FITS(
unsigned char,
unsigned short);
7167 FITS(
unsigned char,
unsigned int);
7168 FITS(
unsigned char,
unsigned long);
7169 FITS(
unsigned char,
unsigned long long);
7178 NARROWS_IF(
short,
unsigned char, (
sizeof(
short) >
sizeof(
char)));
7179 NARROWS_IF(
short,
signed char, (
sizeof(
short) >
sizeof(
char)));
7182 NARROWS_IF(
unsigned short,
unsigned char, (
sizeof(
short) >
sizeof(
char)));
7183 NARROWS_IF(
unsigned short,
signed char, (
sizeof(
short) >
sizeof(
char)));
7188 FITS(
short,
long long);
7190 FITS(
unsigned short,
unsigned short);
7191 FITS(
unsigned short,
unsigned int);
7192 FITS(
unsigned short,
unsigned long);
7193 FITS(
unsigned short,
unsigned long long);
7197 NARROWS_IF(
int,
signed char, (
sizeof(
int) >
sizeof(
char)));
7198 NARROWS_IF(
int,
short, (
sizeof(
int) >
sizeof(
short)));
7202 NARROWS_IF(
unsigned int,
unsigned char, (
sizeof(
int) >
sizeof(
char)));
7203 NARROWS(
unsigned int,
signed char);
7205 NARROWS_IF(
unsigned int,
unsigned short, (
sizeof(
int) >
sizeof(
short)));
7209 FITS(
int,
long long);
7211 FITS(
unsigned int,
unsigned int);
7212 FITS(
unsigned int,
unsigned long);
7213 FITS(
unsigned int,
unsigned long long);
7217 NARROWS_IF(
long,
signed char, (
sizeof(
long) >
sizeof(
char)));
7218 NARROWS_IF(
long,
short, (
sizeof(
long) >
sizeof(
short)));
7219 NARROWS(
long,
unsigned short);
7220 NARROWS_IF(
long,
int, (
sizeof(
long) >
sizeof(
int)));
7224 NARROWS_IF(
unsigned long,
unsigned char, (
sizeof(
long) >
sizeof(
char)));
7225 NARROWS(
unsigned long,
signed char);
7226 NARROWS(
unsigned long,
short);
7227 NARROWS_IF(
unsigned long,
unsigned short, (
sizeof(
long) >
sizeof(
short)));
7229 NARROWS_IF(
unsigned long,
unsigned int, (
sizeof(
long) >
sizeof(
int)));
7232 FITS(
long,
long long);
7234 FITS(
unsigned long,
unsigned long);
7235 FITS(
unsigned long,
unsigned long long);
7238 NARROWS(
long long,
unsigned char);
7239 NARROWS_IF(
long long,
signed char, (
sizeof(
long long) >
sizeof(
char)));
7240 NARROWS_IF(
long long,
short, (
sizeof(
long long) >
sizeof(
short)));
7241 NARROWS(
long long,
unsigned short);
7242 NARROWS_IF(
long long,
int, (
sizeof(
long long) >
sizeof(
int)));
7243 NARROWS(
long long,
unsigned int);
7244 NARROWS_IF(
long long,
long, (
sizeof(
long long) >
sizeof(
long)));
7245 NARROWS(
long long,
unsigned long);
7248 NARROWS_IF(
unsigned long long,
unsigned char, (
sizeof(
long long) >
sizeof(
char)));
7249 NARROWS(
unsigned long long,
signed char);
7250 NARROWS(
unsigned long long,
short);
7251 NARROWS_IF(
unsigned long long,
unsigned short, (
sizeof(
long long) >
sizeof(
short)));
7252 NARROWS(
unsigned long long,
int);
7253 NARROWS_IF(
unsigned long long,
unsigned int, (
sizeof(
long long) >
sizeof(
int)));
7254 NARROWS(
unsigned long long,
long);
7255 NARROWS_IF(
unsigned long long,
unsigned long, (
sizeof(
long long) >
sizeof(
long)));
7257 FITS(
long long,
long long);
7258 FITS(
unsigned long long,
unsigned long long);
7262 NARROWS(
signed char,
unsigned char);
7265 #if !defined(Q_CC_GHS)
7266 NARROWS(
signed char,
unsigned short);
7267 NARROWS(
signed char,
unsigned int);
7268 NARROWS(
signed char,
unsigned long);
7269 NARROWS(
signed char,
unsigned long long);
7271 NARROWS(
unsigned char,
signed char);
7272 FITS(
unsigned char,
short);
7273 FITS(
unsigned char,
int);
7274 FITS(
unsigned char,
long);
7275 FITS(
unsigned char,
long long);
7277 NARROWS(
short,
unsigned short);
7278 #if !defined(Q_CC_GHS)
7280 NARROWS(
short,
unsigned long);
7282 NARROWS(
short,
unsigned long long);
7284 NARROWS(
unsigned short,
short);
7286 FITS(
unsigned short,
int);
7287 FITS(
unsigned short,
long);
7288 FITS(
unsigned short,
long long);
7291 #if !defined(Q_CC_GHS)
7293 NARROWS(
int,
unsigned long long);
7296 NARROWS_IF(
unsigned int,
long, (
sizeof(
int) >=
sizeof(
long)));
7297 FITS(
unsigned int,
long long);
7300 NARROWS(
long,
unsigned long long);
7303 NARROWS_IF(
unsigned long,
long long, (
sizeof(
long) >=
sizeof(
long long)));
7305 NARROWS(
long long,
unsigned long long);
7306 NARROWS(
unsigned long long,
long long);
7310 FITS(UnscopedEnum, UnscopedEnum);
7311 FITS(SignedUnscopedEnum, SignedUnscopedEnum);
7314 NARROWS_IF(UnscopedEnum,
signed char, ((
sizeof(UnscopedEnum) >
sizeof(
char)) || (
sizeof(UnscopedEnum) ==
sizeof(
char) && !IsUnscopedEnumSigned)));
7315 NARROWS_IF(UnscopedEnum,
unsigned char, ((
sizeof(UnscopedEnum) >
sizeof(
char)) || IsUnscopedEnumSigned));
7317 NARROWS_IF(UnscopedEnum,
short, ((
sizeof(UnscopedEnum) >
sizeof(
short)) || (
sizeof(UnscopedEnum) ==
sizeof(
short) && !IsUnscopedEnumSigned)));
7318 NARROWS_IF(UnscopedEnum,
unsigned short, ((
sizeof(UnscopedEnum) >
sizeof(
short)) || IsUnscopedEnumSigned));
7320 NARROWS_IF(UnscopedEnum,
int,
sizeof(UnscopedEnum) >
sizeof(
int) || (
sizeof(UnscopedEnum) ==
sizeof(
int) && !IsUnscopedEnumSigned));
7321 NARROWS_IF(UnscopedEnum,
unsigned int, IsUnscopedEnumSigned);
7323 NARROWS_IF(UnscopedEnum,
long,
sizeof(UnscopedEnum) >
sizeof(
long) || (
sizeof(UnscopedEnum) ==
sizeof(
long) && !IsUnscopedEnumSigned));
7324 NARROWS_IF(UnscopedEnum,
unsigned long, IsUnscopedEnumSigned);
7326 NARROWS_IF(UnscopedEnum,
long long,
sizeof(UnscopedEnum) >
sizeof(
long long) || (
sizeof(UnscopedEnum) ==
sizeof(
long long) && !IsUnscopedEnumSigned));
7327 NARROWS_IF(UnscopedEnum,
unsigned long long, IsUnscopedEnumSigned);
7331 NARROWS_IF(SignedUnscopedEnum,
signed char, (
sizeof(SignedUnscopedEnum) >
sizeof(
char)));
7332 NARROWS_IF(SignedUnscopedEnum,
short, (
sizeof(SignedUnscopedEnum) >
sizeof(
short)));
7333 FITS(SignedUnscopedEnum,
int);
7334 FITS(SignedUnscopedEnum,
long);
7335 FITS(SignedUnscopedEnum,
long long);
7338 FITS(
void *,
void *);
7345 FITS(std::nullptr_t, std::nullptr_t);
7348 struct ConvertingToDouble {
7349 operator double()
const {
return 42.0; }
7352 #if !defined(Q_CC_GHS)
7353 NARROWS(ConvertingToDouble,
char);
7354 NARROWS(ConvertingToDouble,
short);
7355 NARROWS(ConvertingToDouble,
int);
7356 NARROWS(ConvertingToDouble,
long);
7357 NARROWS(ConvertingToDouble,
long long);
7358 NARROWS(ConvertingToDouble,
float);
7360 FITS(ConvertingToDouble,
double);
7361 FITS(ConvertingToDouble,
long double);
7367 #if defined(Q_CC_MSVC) && !defined(Q_CC_CLANG)
7368 struct ConstructibleFromInt {
7369 ConstructibleFromInt(
int) {}
7372 FITS(
char, ConstructibleFromInt);
7373 FITS(
short, ConstructibleFromInt);
7374 FITS(
int, ConstructibleFromInt);
7375 NARROWS(
unsigned int, ConstructibleFromInt);
7376 NARROWS_IF(
long, ConstructibleFromInt,
sizeof(
long) >
sizeof(
int));
7377 NARROWS_IF(
long long, ConstructibleFromInt,
sizeof(
long long) >
sizeof(
int));
7378 NARROWS(
float, ConstructibleFromInt);
7379 NARROWS(
double, ConstructibleFromInt);
7386 #if (defined(Q_CC_EXACTLY_GCC) && Q_CC_EXACTLY_GCC >= 1100) \
7387 || (defined(Q_CC_CLANG) && Q_CC_CLANG >= 1100) \
7388 || defined(Q_CC_MSVC)
7401 #ifdef Q_CC_EXACTLY_GCC
7402 #undef Q_CC_EXACTLY_GCC
7406 void tst_QObject::nullReceiver()
7416 void tst_QObject::functorReferencesConnection()
7418 countedStructObjectsCount = 0;
7423 QCOMPARE(countedStructObjectsCount, 1);
7432 QCOMPARE(countedStructObjectsCount, 2);
7433 obj.triggerSignal();
7435 QCOMPARE(countedStructObjectsCount, 1);
7437 obj.triggerSignal();
7439 QCOMPARE(countedStructObjectsCount, 1);
7441 QCOMPARE(countedStructObjectsCount, 0);
7446 QCOMPARE(countedStructObjectsCount, 1);
7453 QCOMPARE(countedStructObjectsCount, 2);
7454 obj.triggerSignal();
7456 QCOMPARE(countedStructObjectsCount, 1);
7458 obj.triggerSignal();
7460 QCOMPARE(countedStructObjectsCount, 1);
7462 QCOMPARE(countedStructObjectsCount, 0);
7473 auto c2 = connect(sender.data(), &GetSenderObject::aSignal, [] { QFAIL(
"Should not be called"); });
7490 QCOMPARE(countedStructObjectsCount, 1);
7493 int slot1Called = 0;
7494 int slot3Called = 0;
7500 QCOMPARE(countedStructObjectsCount, 4);
7507 QCOMPARE(countedStructObjectsCount, 3);
7508 obj.triggerSignal();
7511 QCOMPARE(countedStructObjectsCount, 3);
7513 QCOMPARE(countedStructObjectsCount, 2);
7514 obj.triggerSignal();
7519 struct DestroyEmit {
7528 int slot1Called = 0;
7529 int slot2Called = 0;
7530 int slot3Called = 0;
7547 void tst_QObject::disconnectDisconnects()
7616 void tst_QObject::singleShotConnection()
7853 auto breakSlot = [&]() {
7855 ++
sender.aPublicSlotCalled;
7884 &receiver,
SLOT(aSlotByName()),
7897 &receiver,
SLOT(aSlotByName()),
7945 bool reconnect =
false;
7946 reconnectingSlot = [&]() {
7947 ++
sender.aPublicSlotCalled;
7950 &
sender, reconnectingSlot,
7956 &
sender, reconnectingSlot,
7969 &
sender, reconnectingSlot,
8165 void tst_QObject::objectNameBinding()
8168 QTestPrivate::testReadWritePropertyBasics<QObject, QString>(
obj,
"test1",
"test2",
8173 static int assertionCallCount = 0;
8174 static int wouldHaveAssertedCount = 0;
8185 ++wouldHaveAssertedCount;
8206 template<>
void assertObjectType<EmitToDestroyedClass::Derived>(
QObject *
o)
8212 ++assertionCallCount;
8213 if (!qobject_cast<Derived *>(
o))
8219 void tst_QObject::emitToDestroyedClass()
8222 std::unique_ptr ptr = std::make_unique<Derived>();
8223 QObject::connect(ptr.get(), &Base::theSignal, ptr.get(), &Derived::doNothing);
8225 QCOMPARE(wouldHaveAssertedCount, 0);
8228 emit ptr->theSignal();
8230 QCOMPARE(wouldHaveAssertedCount, 0);
8234 QCOMPARE(wouldHaveAssertedCount, 1);
8259 #include "tst_qobject.moc"
small capitals from c petite p scientific i
[1]
void on_Sender_signalManyParams(int, int, int, QString, bool, bool)
void on_Sender_signalWithParams(int, QString)
void on_Sender_signalWithParams(int=0)
void on_Sender_signalManyParams()
void emit_signal_with_underscore()
void on_Receiver_signalNoParams()
void on_Sender_signalManyParams(int, int, int, QString, bool)
void emitSignalNoParams()
void on_Sender_signalNoParams()
void on_Sender_signalManyParams2(int, int, int, QString, bool)
QList< int > called_slots
void on_Receiver_signal_with_underscore()
void on_Sender_signalLoopBack()
void signal_with_underscore()
void emitSignalManyParams(int i1, int i2, int i3, QString string, bool onoff)
void emitSignalWithParams(int i, QString string)
void emitSignalLoopBack()
void signalWithParams(int i, QString string)
void signalManyParams2(int i1, int i2, int i3, QString string, bool onoff)
void emitSignalWithParams(int i)
void signalManyParams(int i1, int i2, int i3, QString string, bool onoff)
void emitSignalManyParams2(int i1, int i2, int i3, QString string, bool onoff)
void emitSignalNoParams()
void emitSignalManyParams(int i1, int i2, int i3, QString string, bool onoff, bool dummy)
void signalManyParams(int i1, int i2, int i3, QString string, bool onoff, bool)
void signalWithParams(int i)
AutoConnectSender(QObject *parent)
int rtti() const override
ConnectByNameNotifyReceiverObject()
void disconnectNotify(const QMetaMethod &signal) override
QList< QMetaMethod > connectedSignals
QList< QMetaMethod > disconnectedSignals
void clearNotifications()
void connectNotify(const QMetaMethod &signal) override
void stringPtr(QString *, const QString &)
void stringSlot3(QString &s)
void stringSlot1(QString s)
void boolPtr(bool *, bool)
void boolRefSlot(bool &b1, bool b2)
void stringRef(QString &, const QString &)
void stringSlot2(const QString &s)
void boolRef(bool &, bool)
void stringPtrSlot(QString *s1, const QString &s2)
void stringRefSlot(QString &s1, const QString &s2)
void boolPtrSlot(bool *b1, bool b2)
Q_INVOKABLE Constructable()
void compareSender(QObject *s)
CountedExceptionThrower(bool throwException, QObject *parent=nullptr)
~CountedExceptionThrower()
CustomType(const CustomType &other)
CustomType & operator=(const CustomType &)=default
CustomType(int l1=0, int l2=0, int l3=0)
void theSecondSignal(const QString &s=QString("secondDefault"))
void theSlot(const QString &s)
void emitTheOriginalSignal()
void emitTheSecondSignal()
QPointer< QObject > pointer
void relaySignalAndProcessEvents()
DispatcherWatcher(QEventLoop &e, int *statusAwake, int *statusAboutToBlock)
virtual bool event(QEvent *e) override
QList< QByteArray > changedDynamicProperties
QList< QPair< QObject *, QEvent::Type > > EventList
EventSpy(QObject *parent=nullptr)
bool eventFilter(QObject *object, QEvent *event) override
CountedStruct throwException(const CountedStruct &, CountedStruct s2)
CountedStruct mySignal(const CountedStruct &s1, CountedStruct s2)
int rtti() const override
void mySignal(const ForwardDeclared &)
void mySlot(const ForwardDeclared &)
void signal_VV(const QVariant &, const QVariant &)
void signal_ddS(double, double, const QString &)
void signal_iiS(int, int, const QString &)
void signal_S(const QString &)
void signal_SSSS(const QString &, const QString &, const QString &, const QString &)
void signal_dd(double, double)
void signal_iiSS(int, int, const QString &, const QString &)
void const_slot_vi(int) const
static int static_slot_ii(int)
void signal_viii(int, int, int)
void signal(short &, short, long long, short)
static void static_slot_vii(int, int)
void slot_v_noexcept() noexcept
void slot_viii(int, int, int)
static int static_slot_iii(int, int)
static void static_slot_vRi(int &)
void signal_vRQObject(QObject &)
void slot_vi_noexcept() noexcept
void otherSignal(const char *)
static int static_slot_iiii(int, int, int)
void const_slot_v_noexcept() const noexcept
void signal_vcRQObject(const QObject &)
static void static_slot_viii(int, int, int)
void const_signal_vi(int) const
static void static_slot_vPFvvE(fptr)
static void static_slot_vi(int)
void const_slot_v() const
static int static_slot_i_noexcept() noexcept
static void static_slot_v()
void signal_vii(int, int)
void slot_vcRQObject(const QObject &)
int slot_i_noexcept() noexcept
static void static_slot_vs(short)
void const_signal_v() const
static void static_slot_vRs(short &)
static void static_slot_vi_noexcept(int) noexcept
static void static_slot_v_noexcept() noexcept
void const_slot_vi_noexcept(int) const noexcept
int slot_iiii(int, int, int)
void slot_vRQObject(QObject &)
static int static_slot_i()
void signal2(const QString &, const QString &)
void signal4(const QString &, const QString &, const QString &, const QString &)
void slot4(const QString &a, const QString &b, const QString &c, const QString &d)
void slot3(const QString &a, const QString &b, const QString &c)
void slot5(const QString &a, const QString &b, const QString &c, const QString &d, const QString &e)
void slot6(const QString &a, const QString &b, const QString &c, const QString &d, const QString &e, const QString &f)
void signal1(const QString &)
void signal5(const QString &, const QString &, const QString &, const QString &, const QString &)
void slot1(const QString &a)
void signal3(const QString &, const QString &, const QString &)
void slot2(const QString &a, const QString &b)
void signal6(const QString &, const QString &, const QString &, const QString &, const QString &, const QString &)
QThread * timerEventThread
QThread * customEventThread
void customEvent(QEvent *) override
MoveToThreadObject(QObject *parent=nullptr)
void timerEvent(QTimerEvent *) override
MyFunctor(QObject *objectToDisconnect)
NoDefaultConstructor(int)
void mySlot(const NoDefaultConstructor &)
void mySignal(const NoDefaultConstructor &)
void unsignedlongSlot(unsigned long)
void classPointerSlot(Class *c)
void constTemplateSlot1(Template< int > const)
void ulongPointerSlot(ulong *)
void typeRefSignal(Template< Class & > &ref)
void constEnumPointerSignal(const Enum *e)
void unsignedintSlot(unsigned int)
void constEnumPointerConstPointerSignal(const Enum *const *e)
void structSlot(Struct s)
void structSignal(Struct s)
void structPointerSlot(Struct *s)
void constStructPointerSignal(const Struct *s)
void unsignedlonglongSlot(quint64)
void enumPointerSignal(Enum *e)
void enumPointerSlot(Enum *e)
void unsignedcharSlot(unsigned char)
void constEnumPointerConstPointerSlot(const Enum *const *e)
void constStructPointerSlot(const Struct *s)
void constUintPointerSignal(const uint *)
void ulongPointerSignal(ulong *)
void typePointerConstRefSignal(Class *const &)
void constTypeRefSignal(const Template< Class const & > &ref)
void typeConstRefSignal(Template< Class const & > const &ref)
void constUlongPointerSignal(const ulong *)
void constUlongPointerSlot(const ulong *)
void constTemplateSlot2(const Template< int >)
void constClassPointerSignal(const Class *c)
void uintPointerSignal(uint *)
void unsignedlongSignal(unsigned long)
void unsignedSignal(unsigned)
void typeConstRefSlot(Template< Class const & > const &)
void constTemplateSignal1(Template< int >)
void classPointerSignal(Class *c)
void unsignedlonglongSignal(quint64)
void constClassPointerSlot(const Class *c)
void constClassPointerConstPointerSignal(const Class *const *c)
void constClassPointerConstPointerSlot(const Class *const *c)
void typePointerConstRefSlot(Class *const &)
void typeRefSlot(Template< Class & > &)
void constStructPointerConstPointerSignal(const Struct *const *s)
void classSignal(Class c)
void constTemplateSignal2(Template< const int >)
void unsignedlongintSignal(unsigned long int)
void constTemplateSlot3(const Template< const int >)
void unsignedshortSlot(unsigned short)
void unsignedcharSignal(unsigned char)
void unsignedshortSignal(unsigned short)
void unsignedSlot(unsigned)
void constStructPointerConstPointerSlot(const Struct *const *s)
void structPointerSignal(Struct *s)
void unsignedintSignal(unsigned int)
void uintPointerSlot(uint *)
void constEnumPointerSlot(const Enum *e)
void unsignedlongintSlot(unsigned long int)
void constTypeRefSlot(const Template< const Class & > &)
void constUintPointerSlot(const uint *)
void clearNotifications()
void connectNotify(const QMetaMethod &signal) override
void disconnectNotify(const QMetaMethod &signal) override
QList< QMetaMethod > disconnectedSignals
QList< QMetaMethod > connectedSignals
virtual void slot2() override
virtual void slot1() override
void slo(QObject *o, QObject *p=qApp, QObject *q=qApp, QObject *r=qApp)
void sig(QObject *o, QObject *p, QObject *q=nullptr, QObject *r=nullptr) const
void sig(int i, int j=12)
void slo(int i, int j=43)
void sig(int i, char c, qreal m=12)
void sig(QObject *o, OverloadObject *p=nullptr, QObject *q=nullptr, QObject *r=nullptr)
void setString(const QString &string)
Priority priority() const
void setMyQReal(qreal value)
void setMyFloat(float value)
void setPriority(Priority priority)
void setNumber(int number)
void setVariant(const QVariant &variant)
CustomString customString() const
void setCustom(CustomType *custom)
CustomString customString
void setCustomString(const QString &string)
CustomType * custom() const
void setAlpha(Alpha alpha)
static QAbstractEventDispatcher * instance(QThread *thread=nullptr)
void rowsInserted(const QModelIndex &parent, int first, int last, QPrivateSignal)
virtual bool waitForConnected(int msecs=30000)
virtual void connectToHost(const QString &hostName, quint16 port, OpenMode mode=ReadWrite, NetworkLayerProtocol protocol=AnyIPProtocol)
The QByteArray class provides an array of bytes.
static QCoreApplication * instance()
static bool sendEvent(QObject *receiver, QEvent *event)
static void removePostedEvents(QObject *receiver, int eventType=0)
static void processEvents(QEventLoop::ProcessEventsFlags flags=QEventLoop::AllEvents)
static void postEvent(QObject *receiver, QEvent *event, int priority=Qt::NormalEventPriority)
void aboutToQuit(QPrivateSignal)
static QString applicationDirPath()
static void sendPostedEvents(QObject *receiver=nullptr, int event_type=0)
void signal1(CustomType ct)
QCustomTypeChecker(QObject *parent=nullptr)
void slot2(const QList< CustomType > &ct)
void slot1(CustomType ct)
void signal2(const QList< CustomType > &ct)
void doEmit(CustomType ct)
The QDataStream class provides serialization of binary data to a QIODevice.
operator>>(QDataStream &ds, qfloat16 &f)
operator<<(QDataStream &ds, qfloat16 f)
The QDynamicPropertyChangeEvent class contains event parameters for dynamic property change events.
The QEvent class is the base class of all event classes. Event objects contain event parameters.
The QEventLoop class provides a means of entering and leaving an event loop.
int exec(ProcessEventsFlags flags=AllEvents)
The QFile class provides an interface for reading from and writing to files.
The QLatin1String class provides a thin wrapper around an US-ASCII/Latin-1 encoded string literal.
qsizetype size() const noexcept
bool isEmpty() const noexcept
const_reference at(qsizetype i) const noexcept
void append(parameter_type t)
The QModelIndex class is used to locate data in a data model.
The QMutex class provides access serialization between threads.
The QObject class is the base class of all Qt objects.
int senderSignalIndex() const
Q_INVOKABLE QObject(QObject *parent=nullptr)
void installEventFilter(QObject *filterObj)
void moveToThread(QThread *thread)
static QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
virtual bool event(QEvent *event)
void setParent(QObject *parent)
static bool disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member)
bool blockSignals(bool b) noexcept
int receivers(const char *signal) const
void setObjectName(const QString &name)
bool setProperty(const char *name, const QVariant &value)
void objectNameChanged(const QString &objectName, QPrivateSignal)
void destroyed(QObject *=nullptr)
bool isSignalConnected(uint signalIdx, bool checkDeclarative=true) const
static QMetaObject::Connection connect(const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer< Func2 >::Object *receiverPrivate, Func2 slot, Qt::ConnectionType type=Qt::AutoConnection)
static bool disconnect(const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer< Func2 >::Object *receiverPrivate, Func2 slot)
int signalIndex(const char *signalName, const QMetaObject **meta=nullptr) const
static QObjectPrivate * get(QObject *o)
void relaySignalAndProcessEvents()
void signalWithIncomplete(const Incomplete &)
QObjectWithIncomplete(QObject *parent=nullptr)
void slotWithIncomplete(const Incomplete &)
The QPointer class is a template class that provides guarded pointers to QObject.
The QRegularExpression class provides pattern matching using regular expressions.
The QScopedPointer class stores a pointer to a dynamically allocated object, and deletes it upon dest...
The QSharedPointer class holds a strong reference to a shared pointer.
static QSharedPointer create(Args &&...arguments)
The QString class provides a Unicode character string.
static QString fromLatin1(QByteArrayView ba)
static QString number(int, int base=10)
The QStringListModel class provides a model that supplies strings to views.
The QTcpServer class provides a TCP-based server.
The QTcpSocket class provides a TCP socket.
void start(Priority=InheritPriority)
static QThread * currentThread()
bool wait(QDeadlineTimer deadline=QDeadlineTimer(QDeadlineTimer::Forever))
void started(QPrivateSignal)
The QTimerEvent class contains parameters that describe a timer event.
The QTimer class provides repetitive and single-shot timers.
void setSingleShot(bool singleShot)
void setInterval(int msec)
bool singleShot
whether the timer is a single-shot timer
void timeout(QPrivateSignal)
The QVariant class acts like a union for the most common Qt data types.
static auto fromValue(const T &value) -> std::enable_if_t< std::is_copy_constructible_v< T >, QVariant >
int toInt(bool *ok=nullptr) const
bool canConvert(QMetaType targetType) const
void setValue(T &&avalue)
bool wait(QMutex *, QDeadlineTimer=QDeadlineTimer(QDeadlineTimer::Forever))
The QWeakPointer class holds a weak reference to a shared pointer.
void destroyIfLastRef() noexcept
QSlotObjectBase(ImplFn fn)
QObject * returnPointer()
MoveOnly returnMoveOnlySlot(int i)
ReturnValue * returnThisSlot2()
QVariant returnVariant(int)
CustomType returnCustomType(int)
QString returnStringSlot(int i)
CustomType returnCustomTypeSlot(int i)
MoveOnly returnMoveOnly(int)
QString returnString(int)
QObject * returnThisSlot1()
QVariant returnVariantSlot(int i)
void signal7(int, const QString &)
Q_INVOKABLE QT_MOC_COMPAT void invoke2(int)
Q_INVOKABLE QT_MOC_COMPAT void invoke2()
Q_INVOKABLE void invoke1()
Q_SCRIPTABLE QT_MOC_COMPAT void sinvoke2()
QT_MOC_COMPAT void signal5()
Q_SCRIPTABLE void sinvoke1()
void emitSignal1AfterRecursion()
void aSignal5(const std::unique_ptr< const QObject > &)
void aSignal4(const std::shared_ptr< const QObject > &)
void aSignal1(const QSharedPointer< const QObject > &)
void aSignal2(const QWeakPointer< const QObject > &)
void aSignal3(const QPointer< const QObject > &)
void slot2_deleteSender()
void slot1_disconnectThis()
void slot1_disconnectNext()
void slot2_reconnectNext()
void slot2_reconnectThis()
virtual ~SiblingDeleter()
SiblingDeleter(QObject *sibling, QObject *parent)
StatusChanger(int *status)
void stringSignal(const QString &str)
void variantSlot(const QVariant &v)
void deleteAndRememberSender()
ThreadAffinityThread(SenderObject *sender)
virtual void slot1() override
QSignalSpy spy(myCustomObject, SIGNAL(mySignal(int, QString, double)))
[0]
constexpr T & operator()(T &v) const
auto it unsigned count const
void slot3(const QString &a, const QString &b, const QString &c)
void slot1(const QString &a)
void slot4(const QString &a, const QString &b, const QString &c, const QString &d)
void slot5(const QString &a, const QString &b, const QString &c, const QString &d, const QString &e)
void slot2(const QString &a, const QString &b)
void slot6(const QString &a, const QString &b, const QString &c, const QString &d, const QString &e, const QString &f)
void toString(QString &appendTo, IPv4Address address)
Q_TESTLIB_EXPORT QTestData & newRow(const char *dataTag)
Q_TESTLIB_EXPORT void ignoreMessage(QtMsgType type, const char *message)
Q_CORE_EXPORT void qWait(int ms)
@ BlockingQueuedConnection
typing.Tuple[int, int] test(str binary_directory, *debug=False)
set set set set set set set macro pixldst1 op
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction function
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage return DBusPendingCall DBusPendingCall return DBusPendingCall return dbus_int32_t return DBusServer * server
DBusConnection * connection
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char * method
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter * sub
typedef QByteArray(EGLAPIENTRYP PFNQGSGETDISPLAYSPROC)()
EGLOutputLayerEXT EGLint EGLAttrib value
QT_END_INCLUDE_NAMESPACE typedef double qreal
unsigned long long quint64
#define Q_DISABLE_COPY(Class)
#define Q_SET_OBJECT_NAME(obj)
#define Q_DECLARE_INTERFACE(IFace, IId)
GLboolean GLboolean GLboolean b
GLsizei const GLfloat * v
[13]
GLboolean GLboolean GLboolean GLboolean a
[7]
GLuint GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat s1
GLenum GLenum GLsizei count
GLbitfield GLuint64 timeout
[4]
GLuint GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat t1
[4]
GLuint GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat t0
GLsizei const void * pointer
GLdouble GLdouble GLdouble GLdouble q
GLsizei const GLchar *const * path
GLfloat GLfloat GLfloat alpha
constexpr decltype(auto) qMakePair(T1 &&value1, T2 &&value2) noexcept(noexcept(std::make_pair(std::forward< T1 >(value1), std::forward< T2 >(value2))))
#define QStringLiteral(str)
#define QTEST_MAIN(TestObject)
#define QSKIP(statement,...)
#define QFETCH(Type, name)
#define QTRY_COMPARE(expr, expected)
#define QVERIFY(statement)
#define QVERIFY2(statement, description)
QSqlQueryModel * model
[16]
connect(quitButton, &QPushButton::clicked, &app, &QCoreApplication::quit, Qt::QueuedConnection)
serverDtls doHandshake & serverSocket
ComplexFunctorDeriv(int &overload, QList< QVariant > &result)
void operator()(int a, int b)
void operator()(const T1 &t1, const T2 &t2, const T3 &t3, const T4 &t4)
ComplexFunctor(int &overload, QList< QVariant > &result)
void operator()(int a, int b)
void operator()(const QString &) const
QList< QVariant > & result
void operator()(const QString &s)
void operator()(double a, double b)
CountedStruct & operator=(const CountedStruct &)
CountedStruct(GetSenderObject *sender)
CountedStruct(const CountedStruct &o)
virtual int rtti() const =0
virtual int rtti() const =0
void operator()() noexcept
void operator()(const QString &a)
void operator()(const QString &a, const QString &b)
void operator()(const QString &a, const QString &b, const QString &c)
void operator()(const QString &a, const QString &b, const QString &c, const QString &d)
void operator()(const QString &a, const QString &b, const QString &c, const QString &d, const QString &e)
void operator()(const QString &a, const QString &b, const QString &c, const QString &d, const QString &e, const QString &f)
MoveOnly & operator=(MoveOnly &&o)
virtual void virtualBaseSlot()
bool contains(const AT &t) const noexcept
~QObjectCreatedOnShutdown()
QObjectCreatedOnShutdown()
static void impl(int which, QSlotObjectBase *this_, QObject *, void **metaArgs, bool *ret)
CustomType operator()(int i)
MoveOnly operator()(int i)
QString operator()(int i)
QVariant operator()(int i)
SlotArgFunctor(ContextObject *context, QObject *sender, int *s)
void operator()(const QString &)
CountedStruct operator()(const CountedStruct &, CountedStruct s2) const
QThreadStorage< int * > dummy[8]
void receiverFunction_noexcept() noexcept
void connectFunctorOverload_impl(Signal signal, int expOverload, QList< QVariant > expResult)
#define MANYARGUMENT_COMPARE(L)
QString someFunctionReturningString(int i)
#define NARROWS_IF(x, y, test)
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent