LINUX.ORG.RU

Предотвратить удаление переменной, Qt


0

1
QThread saveThumbThread;
ThumbnailSaver saver;
QString url("fdsfdsfds.png");
QImage myImage("/home/olegk/thumbnail.png");

//m_thumbSavers.append(&saver);
//m_threads.append(&saveThumbThread);

saver.setupSaver(saveThumbThread, myImage, url);
saver.moveToThread(&saveThumbThread);
saveThumbThread.start();

Собственно надо кудато добавить ThumbnailSaver и QThread чтобы по выходу из этой функции они не удалялись. А потом как только поток отрботает мы удалим его. Подскажите плиз как это лучше сделать. Если можно обойтись без указателей будет супер.

★

Последнее исправление: ECLIPSE (всего исправлений: 1)
Ответ на: комментарий от anonymous

Да я за них совсем забыл. Спасибо

ECLIPSE ★
() автор топика
Ответ на: комментарий от anonymous

вот немного по конкретней: http://qt-project.org/doc/qt-4.8/qthreadpool.html#details

 class HelloWorldTask : public QRunnable
 {
     void run()
     {
         qDebug() << "Hello world from thread" << QThread::currentThread();
     }
 }

 HelloWorldTask *hello = new HelloWorldTask();
 // QThreadPool takes ownership and deletes 'hello' automatically
 QThreadPool::globalInstance()->start(hello);

anonymous
()
Ответ на: комментарий от anonymous

Супер, то что надо. Надо только не забыть еще унаследоваться от QObject, потому что QRunnable от него не наследуется. Всем спасибо.

ECLIPSE ★
() автор топика

Если можно обойтись без указателей будет супер.

Вот жеж ты маленький извращенец. Зачем тебе без указателей, если оно специально для этого? Сотвори их в main(), а потом передавай ссылки на них куда нужно если извратиться вздумал.

auto12884835
()

Можно и без указателей:

QEventLoop loop;
loop.connect(&saveThumbThread, SIGNAL(finished()), SLOT(quit()));
saveThumbThread.start();
loop.exec();
Dendy ★★★★★
()
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.