summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn Rutledge <shawn.rutledge@theqtcompany.com>2014-12-15 21:20:12 +0100
committerShawn Rutledge <shawn.rutledge@theqtcompany.com>2014-12-15 21:48:35 +0100
commit4c682f0cf94504379084dba05f36b0ccd737376b (patch)
treee635d0f49d8415dc7c7d74d6e1f54456f489d00f
parente9ca7cf67c0c1b45aa2e2b4faa3c8ab2cac415e7 (diff)
pdfviewer example: direct inheritance from QThread
But either way, the UI is not as responsive as one could wish for during background rendering.
-rw-r--r--examples/widgets/pdfviewer/pagecache.cpp11
-rw-r--r--examples/widgets/pdfviewer/pagecache.h8
2 files changed, 8 insertions, 11 deletions
diff --git a/examples/widgets/pdfviewer/pagecache.cpp b/examples/widgets/pdfviewer/pagecache.cpp
index 5943b90..589a7b0 100644
--- a/examples/widgets/pdfviewer/pagecache.cpp
+++ b/examples/widgets/pdfviewer/pagecache.cpp
@@ -3,13 +3,11 @@
#include <QPdfDocument>
#include <QLoggingCategory>
#include <QElapsedTimer>
-#include <QThread>
Q_DECLARE_LOGGING_CATEGORY(lcExample)
PageCache::PageCache(QPdfDocument *doc, qreal zoom)
- : QObject(Q_NULLPTR)
- , m_thread(new QThread(this))
+ : QThread(Q_NULLPTR)
, m_doc(doc)
, m_zoom(zoom)
, m_placeholderIcon(":icons/images/busy.png")
@@ -19,8 +17,6 @@ PageCache::PageCache(QPdfDocument *doc, qreal zoom)
, m_totalRenderTime(0.)
, m_totalPagesRendered(0)
{
- moveToThread(m_thread);
- connect(this, &PageCache::pagesNeeded, this, &PageCache::run, Qt::QueuedConnection);
}
PageCache::~PageCache()
@@ -36,9 +32,8 @@ QPixmap PageCache::get(int page)
m_lastPageRequested = page;
if (m_pageCache.contains(page))
return m_pageCache[page];
- if (!m_thread->isRunning())
- m_thread->start(QThread::LowestPriority);
- emit pagesNeeded();
+ if (!isRunning())
+ start(QThread::LowestPriority);
QSizeF sizeF = m_doc->pageSize(page);
if (!sizeF.isValid())
return QPixmap();
diff --git a/examples/widgets/pdfviewer/pagecache.h b/examples/widgets/pdfviewer/pagecache.h
index 49d8bf8..6d93211 100644
--- a/examples/widgets/pdfviewer/pagecache.h
+++ b/examples/widgets/pdfviewer/pagecache.h
@@ -5,10 +5,11 @@
#include <QHash>
#include <QPixmap>
#include <QRunnable>
+#include <QThread>
class QPdfDocument;
-class PageCache : public QObject
+class PageCache : public QThread
{
Q_OBJECT
public:
@@ -21,14 +22,15 @@ public slots:
void run();
signals:
- void pagesNeeded();
void pageReady(int page);
+protected:
+ Q_DECL_OVERRIDE void run();
+
private:
void insertPage(int page);
private:
- QThread *m_thread;
QPdfDocument *m_doc;
QHash<int, QPixmap> m_pageCache;
qreal m_zoom;