Commit Graph

15 Commits

Author SHA1 Message Date
Christian Kandeler
dbfd378f5c Wizards: Fix "New Class" with QML_ELEMENT and no QQuickItem include
Amends 2f94e93334.

Fixes: QTCREATORBUG-29092
Change-Id: Ic27729a601534f5b4ed98451f637b9d49029a33a
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: Tasuku Suzuki <tasuku.suzuki@signal-slot.co.jp>
2023-04-28 12:52:46 +00:00
Tasuku Suzuki
2f94e93334 "New Class" wizard: Add QML_ELEMENT checkbox
Change-Id: I219b539ba5f36c895be1042a74571e54a0c67ec6
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2023-01-30 13:46:49 +00:00
Christian Kandeler
e735e95f06 "New Class" wizard: Check custom base class for QObject parent
That is, if the user specifies a custom base class, we check whether its
constructor takes a "QObject *parent" parameter, and if it does, we give
the derived class one as well.
This is technically a heuristic, but the pattern is pretty stable in the
Qt world.

Fixes: QTCREATORBUG-25156
Change-Id: Ie64440929df61cca7258d6d692c5de62970f9a65
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-01-25 08:58:24 +00:00
Christian Kandeler
bcc2b5e08d "New Class" wizard: Try to find a base class header
If the project has a header file whose name suggests that it might
declare the base class, then add an include statement for it.
While we cannot guarantee that the include statement is resolvable as-
is, it's at least a basis for the user to adapt accordingly, while
without any include statement the class will definitely not compile.

Fixes: QTCREATORBUG-3855
Change-Id: I55ec43d58a9a13b9b59a5bbe6415a457b974b654
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2020-02-27 13:28:23 +00:00
Christian Kandeler
6a50abe34f Wizards: Remove "public slots:" segment from class template
Slots have become rather irrelevant with Qt5 and C++11. Let's not annoy
and/or confuse users by reserving a segment for them in our generated
classes.

Change-Id: Ied26bd627c87654ac26f6577387397f39367c0ee
Reviewed-by: hjk <hjk@qt.io>
2019-07-24 15:28:19 +00:00
Christian Kandeler
46ef3f3027 "New class" wizard: Respect the project's "no Qt keywords" setting
Fixes: QTCREATORBUG-6812
Change-Id: I3f51c61f7a1ed1e4626be6bc31fa2e3affed2084
Reviewed-by: hjk <hjk@qt.io>
2019-07-22 15:43:19 +00:00
Christian Kandeler
dfb6fbed7c "New Class" wizard: Add option for adding the Q_OBJECT macro
This lets users specify that a class derived from a custom base should
have a Q_OBJECT macro, and it also allows them to opt out of it for
classes derived directly from QObject & friends.

Fixes: QTCREATORBUG-21810
Change-Id: I850bd3bcb7b6eb71720afe5fa097178ff5d5c620
Reviewed-by: hjk <hjk@qt.io>
2019-07-01 15:19:18 +00:00
Filip Bucek
aaa8beab88 Wizards: Support using #pragma once instead of include guards
Allow users to choose #pragma once instead of #ifndef include guards in
generated header files.

Fixes: QTCREATORBUG-12166
Change-Id: I3ba41c7570beb9c5958e174b5581fcc25855050f
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Filip Bucek <fbucek@atlas.cz>
2019-01-23 09:10:42 +00:00
Tobias Hunger
9e72dc343c Wizards: C++11-ify code generated by JSON wizards
Task-number: QTCREATORBUG-16983
Change-Id: I1f936f25f4e9756239e04d677cec92316e3dc75b
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2016-10-28 11:07:23 +00:00
Tobias Hunger
438c826859 CppClassWizard: Do not add signal/slot to non-QObject classes
Task-number: QTCREATORBUG-14959
Change-Id: I95920a8cb48facf086fbceae3e029bab30c23821
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2015-08-27 12:59:24 +00:00
Tobias Hunger
828b0de5db C++ class wizard: Do not add Q_OBJECT macro for non-QObjects
Task-number: QTCREATORBUG-14515
Change-Id: I02e423acc53ae23169399bc9b86b4753cb84f7a2
Reviewed-by: Alessandro Portale <alessandro.portale@theqtcompany.com>
2015-05-28 15:53:20 +00:00
Marco Bubke
c53a8da3a1 Honor Rule of three (or five) in the class wizard
It is very often a mistake to define a destructor without a copy (and move)
constructor and assignment operator. In C++11 no move constructor and
assignment operator will be generated if a destructor is defined. So it is
better to omit a lonely destructor in out template.

https://en.wikipedia.org/wiki/Rule_of_three_%28C%2B%2B_programming%29

Change-Id: If911556f872d878939f0f2fcaa974494a4df8a8a
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
2014-11-27 13:50:35 +01:00
Tobias Hunger
d2eb042676 JsonWizard: Remove empty lines
Task-number: QTCREATORBUG-13289
Change-Id: I2c8d1fc4e2cfcb940e76a6988d35e80703548668
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
2014-11-03 15:38:47 +01:00
Tobias Hunger
cda0320f5b JsonWizard: Match up files generated by the Cpp Class wizard
Change-Id: I407958b02446e81a449a34519a9eb592723a08a5
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
2014-11-03 09:44:08 +01:00
Tobias Hunger
50df8aa984 JsonWizard: Replace CppClassWizard with a JsonWizard
Change-Id: I4e1aeea4ccd1087b5e804e9ba4c2aa8fde4f4fcb
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2014-10-15 18:21:49 +02:00