Giriş
Şu satırı dahil ederiz.
finished signal
Açıklaması şöyle.
Şöyle yaparız.
Örnek
Şöyle yaparız.
Şöyle yapabiliriz. Worker nesnesi şöyledir.
Şu satırı dahil ederiz.
#include <QThread>
Bu sınıfı kalıtmak yerine QtConcurrent::run() tercih edilebilir.finished signal
Açıklaması şöyle.
sleep metoduFrom Qt 4.8 onwards, it is possible to deallocate objects that live in a thread that has just ended, by connecting the finished() signal to QObject::deleteLater().
Şöyle yaparız.
QThread::sleep(5);
start metoduÖrnek
Şöyle yaparız.
QThread thread;
Worker worker;
worker.moveToThread(&thread1);
QObject::connect(&thread1, &QThread::started, &worker, &Worker::run);
thread.start();
Foo nesnesi şöyledir.class Worker: public QObject
{
public:
void run()
{
...
}
};
ÖrnekŞöyle yapabiliriz. Worker nesnesi şöyledir.
class Worker : public QObject
{
Q_OBJECT
public:
explicit Worker(QObject *parent = nullptr);
signals:
void finished(void);
public slots:
void run(void);
};
run metodu şöyledir
void Worker::process(void)
{
...
emit finished();
}
QThread *thread = new QThread();
Worker *worker = new Worker ()
worker->moveToThread(thread);
QObject::connect(thread,SIGNAL(started()), worker, SLOT(process()), Qt::QueuedConnection);
QObject::connect(thread,SIGNAL(finished()), thread, SLOT(deleteLater()));
QObject::connect(worker,SIGNAL(finished()), thread, SLOT(quit()));
QObject::connect(worker,SIGNAL(finished()), worker, SLOT(deleteLater()));
thread->start();
Hiç yorum yok:
Yorum Gönder