Solved emit Qserialport.readyread in qml
-
Hi all,
I used to use qserialport in c++, and the easy way to read the data from serial is connected readyread with
my custom read slot function.Recently, I tried to use qml for ui design, this is the reference I used : qcsvlog
In his source code, he use timer to monitor and read the data per time, it works ok.But, I really wonder is there a way to use readyread in qml??
and I found I CAN'T create a c++ signal and used it in qml....
Lots of tutorials are talking about qml signal --> cpp Slot, but the opposite one. -
@Phong there are Examples in both ways, even in the official docu.
Here's a broken down example of my own:
/*Cpp.Source File*/ // connect our C++ signal to our QML slot // NOTE: if we want to pass an parameter to our QML slot, it has to be a QVariant. QObject::connect(this, SIGNAL(setText(QVariant)), qmlObject, SLOT(setText(QVariant))); /*QML-File*/ // this function is our QML slot function setText(text){ console.log(text) } //Now call your QML SLot by emiting the signal ... emit setText("Hello From C++"); ...
-
Hi @J-Hilk
Thanks for ur answer, your answer is correct.
I have to apologized I didn't write my question clearly,
I actually want to access C++ signal in qml and act the C++ Slot or qml Slot
That is, do everything in qml.I finally found the solution on Qt Forum,
I can write a signal in my C++ classsignal : void readyRead_();
and call the signal in qml by adding "on" as prefix:
MySerialPort { onReadyRead_(){ //do sometihing } }
Anyway, Thanks a lot!