我这里有点问题。我在信号和插槽方面遇到问题。我会尝试用伪代码来解释。所以,就这样吧。
我有主线程(mainwindow.cpp),当新客户端连接时我正在创建新对象。
主窗口.h:
signals:
void changeText();
...
主窗口.cpp:
connect(tcpserver, SIGNAL(changeText()), this, SIGNAL(changeText()));
...
MyClass *m = new MyClass(this);
connect(this, SIGNAL(changeText()), m, SLOT(changeText()));
我还有 tcpserver 类,它在客户端连接并连接两个信号时创建新的 QThread。
tcpserver.h:
signals:
void changeText();
protected:
void incomingConnection(int handle);
tcpserver.cpp:
void incomingConnection(int handle)
{
QTcpSocket *s = new QTcpSocket(this);
s->setSocketDescriptor(handle);
mythread *thread = new mythread(s, this);
connect(thread, SIGNAL(changeText()), this, SIGNAL(changeText()));
}
问题如下:我有 3 个对象,主线程,从 QTcpServer 继承的 tcpserver 类,以及从 QThread 类继承的 mythread 类。
当我从“tcpserver”创建新的“mythread”-s 并连接信号时,来自新线程的所有信号都连接到“tcpserver”-s 信号,因此,例如,如果 10 个客户端做某事,所有信号都会发送到“tcpserver “这对我来说是个问题。我想了解应该通过 QTread -> TcpServer -> MainWindow 连接到 MyClass 的哪个信号。
对不起我的英语,如果你不明白我的意思,我会尽力解释得更好。
谢谢你。