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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.