diff options
author | Nikolai Kosjar <nikolai.kosjar@theqtcompany.com> | 2015-02-16 11:49:07 +0100 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@theqtcompany.com> | 2015-02-17 13:47:38 +0000 |
commit | 9fb5b0be15a1d877132942ca5da1829510f23361 (patch) | |
tree | cabae43037ebe98ea14895dca1fc18d8f4e76644 /src/plugins/cpptools/cppcompletion_test.cpp | |
parent | 6546a292c2f2f6a70cec950c011a27e91311867e (diff) | |
download | qt-creator-9fb5b0be15a1d877132942ca5da1829510f23361.tar.gz |
CppTools: Add basic completion support for qt5 style signals/slots
Trigger completion for Qt5 signals/slots as soon as the user types '&'
in
connect(object, &
connect(object, &Foo:signal, object2, &
Change-Id: I338a26415196959e3dc413bdfd023314812f3aaa
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
Diffstat (limited to 'src/plugins/cpptools/cppcompletion_test.cpp')
-rw-r--r-- | src/plugins/cpptools/cppcompletion_test.cpp | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/src/plugins/cpptools/cppcompletion_test.cpp b/src/plugins/cpptools/cppcompletion_test.cpp index 5c84ec9307..625132f99b 100644 --- a/src/plugins/cpptools/cppcompletion_test.cpp +++ b/src/plugins/cpptools/cppcompletion_test.cpp @@ -2168,6 +2168,94 @@ void CppToolsPlugin::test_completion_data() << QLatin1String("Foo") << QLatin1String("bar")); + const QByteArray commonSignalSlotCompletionTestCode = + "#define SIGNAL(a) #a\n" + "#define SLOT(a) #a\n" + "#define signals public\n" + "#define slots\n" + "#define Q_OBJECT virtual const QMetaObject *metaObject() const;" + "\n" + "class Base : public QObject\n" + "{\n" + " Q_OBJECT\n" + "public:\n" + " void hiddenFunction();\n" + " void baseFunction();\n" + "signals:\n" + " void hiddenSignal();\n" + " void baseSignal1();\n" + " void baseSignal2(int newValue);\n" + "public slots:\n" + " void baseSlot1();\n" + " void baseSlot2(int newValue);\n" + "};\n" + "\n" + "class Derived : public Base\n" + "{\n" + " Q_OBJECT\n" + "public:\n" + " void hiddenFunction();\n" + " void derivedFunction();\n" + "signals:\n" + " void hiddenSignal();\n" + " void derivedSignal1();\n" + " void derivedSignal2(int newValue);\n" + "public slots:\n" + " void derivedSlot1();\n" + " void derivedSlot2(int newValue);\n" + "};\n" + "\n" + "void client()\n" + "{\n" + " Derived *myObject = new Derived;\n" + " @\n" + "}\n"; + + QTest::newRow("SIGNAL(") + << commonSignalSlotCompletionTestCode + << _("connect(myObject, SIGNAL(") << (QStringList() + << QLatin1String("baseSignal1()") + << QLatin1String("baseSignal2(int)") + << QLatin1String("hiddenSignal()") + << QLatin1String("derivedSignal1()") + << QLatin1String("derivedSignal2(int)")); + + QTest::newRow("SLOT(") + << commonSignalSlotCompletionTestCode + << _("connect(myObject, SIGNAL(baseSignal1()), myObject, SLOT(") << (QStringList() + << QLatin1String("baseSlot1()") + << QLatin1String("baseSlot2(int)") + << QLatin1String("derivedSlot1()") + << QLatin1String("derivedSlot2(int)")); + + QTest::newRow("Qt5 signal") + << commonSignalSlotCompletionTestCode + << _("connect(myObject, &") << (QStringList() + << QLatin1String("Base::baseSignal1") + << QLatin1String("Base::baseSignal2") + << QLatin1String("Base::hiddenSignal") + << QLatin1String("Derived::derivedSignal1") + << QLatin1String("Derived::derivedSignal2") + << QLatin1String("Derived::hiddenSignal")); // OK, hidden signal + + QTest::newRow("Qt5 slot") + << commonSignalSlotCompletionTestCode + << _("connect(myObject, &MyObject::timeout, myObject, &") << (QStringList() + << QLatin1String("Base::baseSignal1") + << QLatin1String("Base::baseSignal2") + << QLatin1String("Base::baseSlot1") + << QLatin1String("Base::baseSlot2") + << QLatin1String("Base::baseFunction") + << QLatin1String("Base::hiddenFunction") + << QLatin1String("Base::hiddenSignal") + << QLatin1String("Derived::derivedFunction") + << QLatin1String("Derived::derivedSignal1") + << QLatin1String("Derived::derivedSignal2") + << QLatin1String("Derived::derivedSlot1") + << QLatin1String("Derived::derivedSlot2") + << QLatin1String("Derived::hiddenFunction") + << QLatin1String("Derived::hiddenSignal")); + QTest::newRow("signals_hide_QPrivateSignal") << _( "#define SIGNAL(a) #a\n" "#define SLOT(a) #a\n" |