ここではほとんど問題はありません。信号とスロットに問題があります。擬似コードで説明しようと思います。だから、ここに行きます。
新しいクライアントが接続したときに新しいオブジェクトを作成するメインスレッド(mainwindow.cpp)があります。
mainwindow.h:
signals:
void changeText();
...
mainwindow.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()));
}
問題は次のとおりです。メインスレッド、QTcpServerから継承するtcpserverクラス、およびQThreadクラスから継承するmythreadクラスの3つのオブジェクトがあります。
「tcpserver」から新しい「mythread」-sを作成してシグナルを接続すると、新しいスレッドからのすべてのシグナルが「tcpserver」-sシグナルに接続されるため、たとえば、10個のクライアントが何かを実行すると、すべてのシグナルが「tcpserver」に送信されます。 「これは私にとって問題になります。QTread->TcpServer->MainWindowを介してMyClassに接続する必要がある信号を理解したい。
私の英語で申し訳ありませんが、私が何を意味するのか理解できない場合は、よりよく説明しようとします。
ありがとうございました。