-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathImageLoadThreadManager.cpp
57 lines (48 loc) · 1009 Bytes
/
ImageLoadThreadManager.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include "ImageLoadThreadManager.h"
CImageLoadThreadManager::CImageLoadThreadManager(QObject* object /*= 0*/)
: QThread(object)
, m_quit(false)
{
}
void CImageLoadThreadManager::run()
{
m_quit = false;
while (!m_quit)
{
if (!m_listImagePath.isEmpty())
{
const QString path = m_listImagePath.takeFirst();
if (!path.isEmpty())
{
qDebug() << "Start to load: " << path;
QImageReader reader(path);
QImage image;
if (reader.read(&image))
{
const int kLimitSize = 500;
if (image.width() > kLimitSize || image.height() > kLimitSize)
{
image = image.scaled(kLimitSize, kLimitSize, Qt::KeepAspectRatio);
}
Q_EMIT imageLoadFinished(QPixmap::fromImage(image), path);
}
}
}
msleep(10);
}
}
void CImageLoadThreadManager::quit()
{
m_quit = true;
QThread::quit();
}
void CImageLoadThreadManager::stopAndClear()
{
m_listImagePath.clear();
quit();
wait();
}
CImageLoadThreadManager::~CImageLoadThreadManager()
{
stopAndClear();
}