get the last QWidget actived
Solved
Qt Creator and other tools
-
Hi,
My program has two projects :
- one is a DLL.
- the other an EXE.
In my EXE, I have to apply a qobject_cast on a class who is contained in my DLL.
But if I put in this class (in the DLL) the macro Q_OBJECT, my IDE (visual studio 2017) cannot compile the project with an error of linking.
-
Is your .dll project also managed with Qt ?
-
Then there should be no problem with
qobject_cast
. -
What exact problems ?
-
Hi, sorry for my late
This problem for example :
#pragma once #include <QtCore/qobject.h> class __declspec(dllexport) LayoutManager : public QObject { Q_OBJECT public: template <class T>T findParent(QObject *child) { T r = nullptr; if (!child) return nullptr; QObject *parent = child->parent(); while (parent) { r = qobject_cast<T>(parent); if (r) return r; parent = parent->parent(); } return r; } };
And I have this error message :
Error : C2338 : qobject_cast requires the type to have a Q_OBJECT macroBut the macro is here. So instead of qobject_cast, I have to use dynamic_cast
-
What type are you looking for ?
-
And is that type a QObject based class with
Q_OBJECT
in it's declaration ?@bozo6919 said in get the last QWidget actived:
class __declspec(dllexport) LayoutManager : public QObject
On a side note, Qt provides macros to properly handle the export/import stuff. See here.