diff options
author | Shawn Rutledge <shawn.rutledge@theqtcompany.com> | 2014-12-15 21:20:12 +0100 |
---|---|---|
committer | Shawn Rutledge <shawn.rutledge@theqtcompany.com> | 2014-12-15 21:48:35 +0100 |
commit | 4c682f0cf94504379084dba05f36b0ccd737376b (patch) | |
tree | e635d0f49d8415dc7c7d74d6e1f54456f489d00f | |
parent | e9ca7cf67c0c1b45aa2e2b4faa3c8ab2cac415e7 (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.cpp | 11 | ||||
-rw-r--r-- | examples/widgets/pdfviewer/pagecache.h | 8 |
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; |