Qt5.12.3: C++ signal -> QML slot
-
Hi all,
I have just upgraded from Qt5.9 to Qt5.12.3.
Now I get some errors when I am compiling my application with the new Qt version.I am sending signals from C++ and receive them in slots in QML. I am sending to parameters with these signals.
Now I get a reference error, that is telling me that this variable (parameter of my signal) is not defined.ReferenceError: name is not defined
Here a little example:
C++:
class TestClass: public QObject { Q_OBJECT public: ... protected: ... private: ... signals: void propertyChanged(QString name, QString val); private slots: ... };
QML:
Connections { target: TestClass onPropertyChanged: { if (name == "testStr") { } ... } }
Any ideas?
How can I send a parameter with signal / slot from C++ to QML?Kind regards,
Melle_87 -
I was about to post about the same topic, as I am encountering the same issue.
Can you confirm that you are using similar settings:MSVC 2017 32bit
Compiling in debug mode.
Launching via the debugger.For me everything works as expected when launching via "Run".
Cheers!
-
Thanks for your answer.
I am cross compiling on Ubuntu for Raspberry Pi 3. (GCC)
I am also compiling in debug mode and launching via the debugger.
And yes you are right. If I am launching via "Run" then everyhing works as expected.Maybe someone already found a solution for this problem?
-
Well this takes MSVC and Windows out of the equation at least.
I was briefly looking for a solution yesterday but were unable to find one.But now that you are able to reproduce it as well I feel like this might be worth a bug report depending on answers to come.
-
I can't really confirm this.
I've been working on a (new) QML/cpp project all week, (macOS and iOS) and did not run into this at all (Qt 5.12.3).
Have you done a clean/rebuild (build folder deletion) since updating ?
Usually that shouldn't be needed as the new Qt version creates it own shadow build folder, depending on the version name.
But it won't hurt to try, I guess. -
Okay. Thanks.
Yes. I already cleaned everything and built it new.
Now, I deleted the build folder (as you suggested).
But I am facing the same problem.If I am launching via "Start Debugging" I get these errors.
If I am launching via "Run" everything seems to be okay. -
@LeLev :
Okay. Now I created a repo on github.Now this example is really stripped down to a minimum. Please don't ask for the sense of this project now. Because now it does not make sense anymore. But it demonstrates the error.
-
@Melle_87 thanks,
I assume, in the example for your case, the background does not turn red ?
because it does for me, out of the boxQt 5.12.2
MacOS
edit:
same on windows, 5.12.2 as well I don't have a desktop 5.12.3 version. background turns red, either way, with or without debugger attached. -
@J.Hilk: Yes.
When I start the application out of Qt Creator via "Start debugging" the rectangle keeps blue and I get the error "ReferenceError: name is not defined".
If I start the application via "Run" the rectangle gets red and I get no errors.As I mentioned before:
I am using Qt5.12.3. (Before I used Qt5.9.)
I am developing on Ubuntu and crosscompiling for Raspberry Pi 3.Maybe in your case it is working because of your Qt5.12.2 version?
-
@Melle_87 said in Qt5.12.3: C++ signal -> QML slot:
Maybe in your case it is working because of your Qt5.12.2 version?
maybe,
what are your debug settings, do you have qml debugging and profiling enabled ? do you use the QtQuickCompiler? -
-
@Melle_87 said in Qt5.12.3: C++ signal -> QML slot:
Maybe in your case it is working because of your Qt5.12.2 version?
I've got same issue here with Windows XP7 64 and Qt5.12.3 32bit/MSVC2017:
- when starting in debug (F5) the window stays blue,
- when starting with "run" (Ctrl+R) the windows becomes red!
-
Well, I went and installed 5.12.3
And loe and behold, the background stays blue. And the QML error appears in the console.
since it works with 5.12.2 I would say this is a bug.
You should open that bug report you mentioned. The minimal example will help speed that one up as well!
You should post a link to the ticket, when you have. So others can find and follow it as well!
-
@Melle_87 Very strange, I've cleaned up a little bit the project:
in pro file
... #QT += core gui serialport serialbus network sql qml quick widgets dbus multimedia multimediawidgets printsupport QT += core gui qml quick widgets printsupport ...
in Main.qml
import QtQuick 2.6 import QtQuick.Window 2.3 import QtQuick.Controls 1.4 import "." ...
Remove all build direction, rebuild all and now window is always red!?! in Release and Debug.
-
@KroMignon
you must have done more, as simply changing the pro file to only include those, still results in a blue background for me