Accessing gui from other class
-
My main class is "socketserver1" and i try to access it's gui from "MyServer" class. I created a signal on MyServer class: http://pastebin.com/u0aw9c2C . And to my socketserver1(mainwindow) i added a slot to add log: http://pastebin.com/J1XSmdhi . On my socketserver1 i added a connect to connect signal from server to slot from my socketserver1: http://pastebin.com/x8FnFrKh . However, when on second class i do "emit addToLog("ABCDEF"); it doesn't fire the slot and nothing happens.
-
@Paul-H. i am emitting the signal when the server can list on port, so it will add to the consolelog that listening on that port started. I also will add to add to consolelog when incommingConnection is emitted. But whenever i emit the signal, it just doesn't put anything on the ConsoleLog. The connection is made in main thread, before the server starts. Even if i put to start the serveron push of a button (so i connect it before) it doesn't fire the slot.
-
Ok, I apparently don't understand everything that is going on in your program.
But if I create a bare bones QObject MyServer class as follows:#include "myserver.h" MyServer::MyServer(QObject *parent) : QObject(parent) { } void MyServer::emitTest(const QString toadd) { emit addToLog(toadd); }
Then add a call to emitTest in the socketserver1 class after the connect:
MyServer *server = new MyServer(this); connect(server,SIGNAL(addToLog(const QString)),this,SLOT(addLog(const QString))); server->emitTest("TEST1");
the slot is fired as expected. That is why I thought that the signal was being emitted before it was connected to the slot.
PaulEdit: You mention using threads, which I am not experienced with. Does it make a difference if you make the MyServer *server a member variable of socketserver1 class instead of declaring it locally in the constructor?