[Development] Some Qt3D feedback
Sean Harmer
sean.harmer at kdab.com
Thu Jun 18 15:01:47 CEST 2015
That's a bug in Qt3D.
https://codereview.qt-project.org/#/c/114639/
Cheers,
Sean
On Thursday 18 Jun 2015 13:19:24 Simon Hausmann wrote:
> On Thursday, June 18, 2015 12:45:53 PM Marc Mutz wrote:
> [...]
>
> > The meta-type system and moc are perfectly fine with namespaces. If people
> > would just peek over their own noses and over to your cousin, KDE, you'd
> > see that, say, kdepimlibs would have a very hard time indeed, if
> > QMetaType or moc would have any trouble with namespaces whatsoever.
>
> Let me give you a concrete example of where "no trouble whatsoever" does not
> hold in my opinion:
>
> Qt3D has a QKeyboardInput class:
>
> namespace Qt3D {
>
> class QKeyboardInput: public QComponent
> {
> ...
> Q_SIGNALS:
> void leftPressed(Q3DKeyEvent *event);
> ...
> };
>
> The Q3DKeyEvent class is declared in a namespace as well:
>
> namespace Qt3D {
> class Q3DKeyEvent : public QObject
> {
> ...
> };
> }
>
> The moc generated code for QKeyboardInput stores "Q3DKeyEvent*" as
> type name for the parameter of the leftPressed signal.
>
> When connecting to this signal using the traditional SIGNAL/SLOT syntax,
> a string comparison takes place to ensure that the types match. This means
> two things for a signal-slot connection to work:
>
> 1) The signature of the slot that connects to the signal has either ignore
> the parameter or it has to be qualified exactly like in the signal
> declaration, in order for the connect() call to work. You cannot simply use
> this:
>
> class MyReceiver : public QObject
> {
> ...
> Q_SLOTS:
> void turnLeft(Qt3D::Q3DKeyEvent *event);
> };
>
> 2) In addition if the parameter was _not_ prefixed but was merely called
> "KeyEvent", then the following code would allow for connections to be
> established, but it would crash at run-time - eliminating the type-safety of
> signal and slot connections:
>
> struct KeyEvent {
> ...
> }
>
> class MyReceiver : public QObject
> {
> ...
> Q_SLOTS:
> void turnLeft(KeyEvent *event);
> };
>
>
>
> Simon
> _______________________________________________
> Development mailing list
> Development at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development
--
Dr Sean Harmer | sean.harmer at kdab.com | Managing Director UK
KDAB (UK) Ltd, a KDAB Group company
Tel. +44 (0)1625 809908; Sweden (HQ) +46-563-540090
Mobile: +44 (0)7545 140604
KDAB - Qt Experts
More information about the Development
mailing list