The child of a QObject must always be created in the thread where the parent was created.
You must ensure that all objects created in a thread are deleted before you delete the QThread.
This can be done easily by creating the objects on the stack in your run() implementation.
Ваш код:
C++ (Qt)
void RTorrentIO::run(){
...
client = new Client(parent());
...
exec();
delete client;
client = 0;
}
Уберите parent().
delete client; //возможно лишнее т.к. точка останова сюда не попадала ни разу.
а вот это какраз и не лишнее. Этот код должен выполнится после завершения exec (завершение потока). Лишнее было в деструкторе. Перепешите его так:
C++ (Qt)
RTorrentIO::~RTorrentIO()
{
if(!--InstanceCount)
{
quit();
wait();
}
}
Также настараживает вот этот код:
C++ (Qt)
Client * RTorrentIO::operator ->()
{
return client;
}
и более того -
InstanceCount. Т.е. экземпляр Client создается для пераого потока и используется для остальных??? Тут налицо неправильная работа с потоком