Тут я ищу файлы с определенным расширением и через сигнал-слот записываю в listWidget.
все это происходит в отдельном потоке что бы не было подвисаний
void Widget::test0()
{
QThread *thread = new QThread; // создаём поток... вначале он создаётся остановленным
MyClass *job = new MyClass; // создаём экземпляр нашего класса
job->moveToThread(thread); // наш класс мы уводим на только что созданный поток... теперь класс будет выполняться независимо от главного окна
connect(thread,SIGNAL(started()),job,SLOT(test())); // когда поток стартует, то начать выполнение работы нашего класса
connect(job,SIGNAL(finished()),thread,SLOT(quit())); // когда работа будет завершена, завершить поток
//connect(job,SIGNAL(finished()),job,SLOT(deleteLater())); // когда работа будет завершена, удалить наш экземпляр класса
connect(thread,SIGNAL(finished()),thread,SLOT(deleteLater())); // когда поток остановится, удалить его
//connect(job,SIGNAL(sendString(QString)),this,SLOT(reciveString(QString))); // соединить сигнал передачи строки нашего класса со слотом главного окна
thread->start(); // всё настроено, теперь просто запускаем поток.
connect(job,SIGNAL(sendString(QString)),ui->label,SLOT(setText(QString)));
connect(job,SIGNAL(sendString(QString)),this,SLOT(copy_filePath(QString)));
}
void MyClass::test()
{
patch = "/home";
QDirIterator iterator (patch, QDir::Files | QDir::NoSymLinks, QDirIterator::Subdirectories);
QTime time;
time.start();
while(iterator.hasNext())
{
iterator.next();
if((iterator.fileInfo().completeSuffix() == "xlsx") ||
(iterator.fileInfo().completeSuffix() == "xls") ||
(iterator.fileInfo().completeSuffix() == "txt"))
{
//ui->listWidget->addItem(iterator.fileInfo().filePath());
QString t =QTime().addMSecs( time.elapsed() ).toString();
emit sendString(iterator.fileInfo().filePath());
emit sendStringTime(t);
}
}
emit sendStringTime("ГОТОВО");
emit finished(); // вызываем сигнал, что мы закончили работу
}вот в этой строчке я получаю данные из класса MyClass и передаю их в класс Widget
connect(job,SIGNAL(sendString(QString)),this,SLOT(copy_filePath(QString)));потом мне эти данные я хочу тоже запустить в поток что бы окно не зависало, там будут копироваться найденные файлы в определенную папку.
для этого мне надо как то данные из класса Widget передать в новый класс MyClass2
как это можно сделать?
можно ли что то на подобии этого сделать?
connect(job,SIGNAL(sendString(QString)),MyClass2,SLOT(copy_filePath(QString)));ведь this указывает что я передаю в текущий класс. значит можно написать что бы передавались данные и в другой класс?