J'ai un programme simple (un peu) qui crée de nouveaux threads, une par connexion à une prise:QObject: findChildren et QThread
void TelnetServer::incomingConnection(qintptr socketDescriptor)
{
TelnetConnection *thread = new TelnetConnection(socketDescriptor);
connect(thread, SIGNAL(shutdownRequested()), m_controller, SLOT(shutdown()));
connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
thread->start();
}
après un nouveau thread est créé, la sortie I qDebug une liste de tous enfants du parent qui a créé les qthreads (TelnetConnection) comme ceci:
QList<QObject*> activeTelnetConnections = m_telnetserver->findChildren <QObject *>(); // Find all QThreads that children of telnetserver
qDebug() << "Children: " << activeTelnetConnections;
depuis mes qthreads decend de QObject, je voir une liste des qthreads et plus. Cependant, je ne peux pas trouver les Qthreads! C'est tout ce que je vois:
Children: (QNativeSocketEngine(0x7eb880) , QSocketNotifier(0x7ea5f0))
Pourquoi ne vois-je pas les fils enfants? Cela signifie-t-il que les threads ne sont plus associés à l'objet parent? Ou est-ce que je fais quelque chose de mal ici ...
C'était comme ça - j'ai dû mettre le parent sur la ligne d'initialisation du constructeur et ensuite ils étaient visibles! – TSG