Using QThread , Signal() , Slot() So GUI won't freeze
-
Yes,
signals: void update_gui(QString packetInfoQString); };The issue is here : pcap_loop got call back function named packet_handle - this function emit update_gui
but the problem here that pcap_loop requires static function , while packet_handle can't be static function
try to run the project that's very short code
@__d4ve__ said in Using QThread , Signal() , Slot() So GUI won't freeze:
signals:
void update_gui(QString packetInfoQString);
};Where is this signal defined?
In the code snippet you've posted here, you have a function called
(I dont know if this is still your current code...)void workerobject::packet_looper() { .... }so one can assume it's a part of your
workerobject.cppfile.
Above that code there isvoid packet_handler(u_char* user_data, const struct pcap_pkthdr* packet_header, const u_char* packet_data) { // ..... emit update_gui(packetInfoQString); }Are you aware that
packet_handlerwhen written like that, is not a member of any class? It's defined as global function and there it probably wont recognize whatupdate_guiis.
The same applies, when trying to emit that signal from somewhere else other than where it was defined. -
@__d4ve__ said in Using QThread , Signal() , Slot() So GUI won't freeze:
signals:
void update_gui(QString packetInfoQString);
};Where is this signal defined?
In the code snippet you've posted here, you have a function called
(I dont know if this is still your current code...)void workerobject::packet_looper() { .... }so one can assume it's a part of your
workerobject.cppfile.
Above that code there isvoid packet_handler(u_char* user_data, const struct pcap_pkthdr* packet_header, const u_char* packet_data) { // ..... emit update_gui(packetInfoQString); }Are you aware that
packet_handlerwhen written like that, is not a member of any class? It's defined as global function and there it probably wont recognize whatupdate_guiis.
The same applies, when trying to emit that signal from somewhere else other than where it was defined.To add to my fellows, it's typically a good case for the use of invokeMethod.