С передачей параметров вроде разобрался. Оказалась, напутал с qRegisterMetaType(). Теперь возник вопрос немного другого характера, связанный с потоками.
Вот мой код:
//Запуск проверки хостов
//PClist — потомок QThread, ему передаются различные параметры соединения
for(int i=1; i < 254; i++)
{
PCList *pc_list=new PCList(netmask+QString::number(i)/*это IP*/,conn_port/,timeout, this);
pc_list->setObjectName(QString("pc_list%1").arg(i));
connect(pc_list, SIGNAL(lookedUp(const QHostInfo&,const QStringList&, const QList<QFileInfo>&)), this,
SLOT(addHostToList(const QHostInfo&,const QStringList&, const QList<QFileInfo>&)));
connect(this, SIGNAL(closed()), pc_list, SLOT(quit()));
connect(pc_list, SIGNAL(AllListed()), this, SLOT(AllListed()));
connect(pc_list, SIGNAL(started()), this, SLOT(incThreadsCounter()));
connect(pc_list, SIGNAL(finished()), this, SLOT(decThreadsCounter()));
pc_list->start();
QApplication::processEvents();
}
//Здесь запуск класс потока, который проверяет хосты
void PCList::run()
{
socket=new QTcpSocket();
timer= new QTimer();
connect(timer, SIGNAL(timeout()), this, SLOT(quit()));
timer->start(timeout+50);
connect(socket, SIGNAL(connected()), this, SLOT(havePC()));
qRegisterMetaType<QAbstractSocket::SocketError>("QAbstractSocket::SocketError");
connect(socket, SIGNAL(error ( QAbstractSocket::SocketError)),this, SLOT(haveError(QAbstractSocket::SocketError)));
connect(socket, SIGNAL(disconnected()), this, SLOT(quit()));
socket->connectToHost(netmask, port);
exec();
}
//Обработка информации о хостах (слот для сигнала connected() сокета)
void PCList::havePC()
{
QHostInfo info;
info.setHostName(socket->peerName());
QDir dir;
dir.setPath("//"+info.hostName());
QList<QFileInfo> file_infos;
QStringList files=dir.entryList();
QFileInfo file_info;
foreach(QString file, files)
{
file_info.setFile(dir,file);
file_info.refresh();
file_infos.append(file_info);
}
emit lookedUp(info, files, file_infos);
socket->disconnectFromHost();
exit();
}
Я в многопоточном программировании не очень (так что сильно не бейте

), поэтому возможно (точнее наверняка

) что-то сделал не так. При таком коде все работает, но судя по всему неправильно. Потоки не получают свой цикл обработки событий, т.к. главный поток время от времени виснет

И еще одно, почему-то после закрытия программы выпадает сообщение об ошибке "Cannot send event to objects owned by other thread".
... << RSDN@Home 1.2.0 alpha rev. 789>>