[Fix] Fixed preview window.
This commit is contained in:
parent
a837960796
commit
9d1e82deb4
@ -50,6 +50,8 @@ void PDFFactory::createWidgets(void) {
|
|||||||
|
|
||||||
connect(pdfTableView, SIGNAL(pageClicked(QMouseEvent*,QImage)), pdfPreview,
|
connect(pdfTableView, SIGNAL(pageClicked(QMouseEvent*,QImage)), pdfPreview,
|
||||||
SLOT(pageClicked(QMouseEvent*,QImage)));
|
SLOT(pageClicked(QMouseEvent*,QImage)));
|
||||||
|
connect(pdfTableView, SIGNAL(previewUpdate(Poppler::Page*)), pdfPreview,
|
||||||
|
SLOT(previewUpdate(Poppler::Page*)));
|
||||||
|
|
||||||
setWindowIcon(QIcon(":/img/hpdf.png"));
|
setWindowIcon(QIcon(":/img/hpdf.png"));
|
||||||
setWindowTitle(tr("HPDF"));
|
setWindowTitle(tr("HPDF"));
|
||||||
|
@ -131,16 +131,22 @@ void PDFFileWidget::pageClickedHandler(QMouseEvent*, QImage) {
|
|||||||
|
|
||||||
void PDFFileWidget::setDocument(Poppler::Document* document, QString fileName) {
|
void PDFFileWidget::setDocument(Poppler::Document* document, QString fileName) {
|
||||||
document->setRenderHint(Poppler::Document::TextAntialiasing);
|
document->setRenderHint(Poppler::Document::TextAntialiasing);
|
||||||
|
Poppler::Document* doc = Poppler::Document::load(fileName);
|
||||||
|
doc->setRenderHint(Poppler::Document::TextAntialiasing);
|
||||||
|
|
||||||
int numPages = document->numPages();
|
int numPages = document->numPages();
|
||||||
for(int i = 0; i < numPages; i++) {
|
for(int i = 0; i < numPages; i++) {
|
||||||
Poppler::Page* pdfPage = document->page(i);
|
Poppler::Page* pdfPage = document->page(i);
|
||||||
|
|
||||||
PDFPageWidget* pageWidget = new PDFPageWidget();
|
PDFPageWidget* pageWidget = new PDFPageWidget();
|
||||||
|
|
||||||
|
pageWidget->setPopplerPage(doc->page(i));
|
||||||
tgen.render(pageWidget, pdfPage);
|
tgen.render(pageWidget, pdfPage);
|
||||||
|
|
||||||
connect(pageWidget, SIGNAL(pageClicked(QMouseEvent*,QImage)), this,
|
connect(pageWidget, SIGNAL(pageClicked(QMouseEvent*,QImage)), this,
|
||||||
SIGNAL(pageClicked(QMouseEvent*,QImage)));
|
SIGNAL(pageClicked(QMouseEvent*,QImage)));
|
||||||
|
connect(pageWidget, SIGNAL(previewUpdate(Poppler::Page*)), this,
|
||||||
|
SIGNAL(previewUpdate(Poppler::Page*)));
|
||||||
|
|
||||||
pagesContainerWidget->addPageWidget(pageWidget);
|
pagesContainerWidget->addPageWidget(pageWidget);
|
||||||
/* Process event. */
|
/* Process event. */
|
||||||
|
@ -75,5 +75,6 @@ private:
|
|||||||
signals:
|
signals:
|
||||||
void pageClicked(QMouseEvent*, QImage);
|
void pageClicked(QMouseEvent*, QImage);
|
||||||
void pageClicked(QMouseEvent*, Poppler::Page*);
|
void pageClicked(QMouseEvent*, Poppler::Page*);
|
||||||
|
void previewUpdate(Poppler::Page*);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -44,6 +44,10 @@ void PDFPageWidget::setButton(QPushButton* btn) {
|
|||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PDFPageWidget::setPopplerPage(Poppler::Page* pp) {
|
||||||
|
pPage = pp;
|
||||||
|
}
|
||||||
|
|
||||||
void PDFPageWidget::setThumbnail(QImage pageImage) {
|
void PDFPageWidget::setThumbnail(QImage pageImage) {
|
||||||
image = pageImage;
|
image = pageImage;
|
||||||
pixmap = QPixmap::fromImage(image);
|
pixmap = QPixmap::fromImage(image);
|
||||||
@ -53,7 +57,10 @@ void PDFPageWidget::setThumbnail(QImage pageImage) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PDFPageWidget::mousePressEvent(QMouseEvent* event) {
|
void PDFPageWidget::mousePressEvent(QMouseEvent* event) {
|
||||||
|
if(pPage != NULL) {
|
||||||
emit pageClicked(event, image);
|
emit pageClicked(event, image);
|
||||||
|
emit previewUpdate(pPage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PDFPageWidget::leaveEvent(QEvent* event) {
|
void PDFPageWidget::leaveEvent(QEvent* event) {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include <QFrame>
|
#include <QFrame>
|
||||||
|
#include <poppler-qt5.h>
|
||||||
|
|
||||||
class QWidget;
|
class QWidget;
|
||||||
class QPushButton;
|
class QPushButton;
|
||||||
@ -15,6 +16,8 @@ class PDFPageWidget : public QFrame {
|
|||||||
public:
|
public:
|
||||||
PDFPageWidget(QWidget* parent = 0);
|
PDFPageWidget(QWidget* parent = 0);
|
||||||
void setThumbnail(QImage pageImage);
|
void setThumbnail(QImage pageImage);
|
||||||
|
void setPopplerPage(Poppler::Page*);
|
||||||
|
|
||||||
void setButton(QPushButton* btn);
|
void setButton(QPushButton* btn);
|
||||||
QSize sizeHint() const;
|
QSize sizeHint() const;
|
||||||
/*void setButtonImage(QImage* pageImage);*/
|
/*void setButtonImage(QImage* pageImage);*/
|
||||||
@ -29,10 +32,12 @@ private:
|
|||||||
/*QVector<QPushButton> buttons;*/
|
/*QVector<QPushButton> buttons;*/
|
||||||
QPushButton* button;
|
QPushButton* button;
|
||||||
QImage image;
|
QImage image;
|
||||||
|
Poppler::Page* pPage;
|
||||||
QPixmap pixmap;
|
QPixmap pixmap;
|
||||||
QPushButton* btn1, *btn2;
|
QPushButton* btn1, *btn2;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void pageClicked(QMouseEvent* event, QImage pageImage);
|
void pageClicked(QMouseEvent* event, QImage pageImage);
|
||||||
|
void previewUpdate(Poppler::Page*);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
#include <QtWidgets>
|
#include <QtWidgets>
|
||||||
#include "pdf_preview_widget.h"
|
#include "pdf_preview_widget.h"
|
||||||
|
|
||||||
|
int test;
|
||||||
PDFPreviewWidget::PDFPreviewWidget(QWidget* parent) : QWidget(parent) {
|
PDFPreviewWidget::PDFPreviewWidget(QWidget* parent) : QWidget(parent) {
|
||||||
|
pPage = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PDFPreviewWidget::setImage(QImage image) {
|
void PDFPreviewWidget::setImage(QImage image) {
|
||||||
@ -10,17 +11,43 @@ void PDFPreviewWidget::setImage(QImage image) {
|
|||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PDFPreviewWidget::regenImage(void) {
|
||||||
|
if(pPage != NULL) {
|
||||||
|
double dpi;
|
||||||
|
double dpi2;
|
||||||
|
QSize targetSize = this->size();
|
||||||
|
QSizeF oriSize = pPage->pageSizeF();
|
||||||
|
double oriDpi = 72;
|
||||||
|
dpi = targetSize.height() / (float)oriSize.height()*72;
|
||||||
|
dpi2 = targetSize.width() / (float)oriSize.width()*72;
|
||||||
|
dpi = dpi<dpi2?dpi:dpi2;
|
||||||
|
previewImage = pPage->renderToImage(dpi, dpi);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void PDFPreviewWidget::previewUpdate(Poppler::Page* pp) {
|
||||||
|
pPage = pp;
|
||||||
|
regenImage();
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
void PDFPreviewWidget::pageClicked(QMouseEvent* mouseEvent, QImage image) {
|
void PDFPreviewWidget::pageClicked(QMouseEvent* mouseEvent, QImage image) {
|
||||||
setImage(image);
|
/*setImage(image);*/
|
||||||
|
}
|
||||||
|
|
||||||
|
void PDFPreviewWidget::resizeEvent(QResizeEvent* event) {
|
||||||
|
regenImage();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PDFPreviewWidget::paintEvent(QPaintEvent* event) {
|
void PDFPreviewWidget::paintEvent(QPaintEvent* event) {
|
||||||
QPainter painter(this);
|
if(pPage != NULL) {
|
||||||
|
|
||||||
|
QPainter painter(this);
|
||||||
QPixmap pixmap = QPixmap::fromImage(previewImage);
|
QPixmap pixmap = QPixmap::fromImage(previewImage);
|
||||||
pixmap = pixmap.scaled(size(), Qt::KeepAspectRatio);
|
pixmap = pixmap.scaled(size(), Qt::KeepAspectRatio);
|
||||||
painter.drawPixmap(QRect((size().width() - pixmap.width()) / 2,
|
painter.drawPixmap(QRect((size().width() - pixmap.width()) / 2,
|
||||||
(size().height() - pixmap.height()) / 2,
|
(size().height() - pixmap.height()) / 2,
|
||||||
pixmap.width(), pixmap.height()), pixmap);
|
pixmap.width(), pixmap.height()), pixmap);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
#include <poppler-qt5.h>
|
||||||
|
|
||||||
class QImage;
|
class QImage;
|
||||||
class QPaintEvent;
|
class QPaintEvent;
|
||||||
@ -9,15 +10,23 @@ class PDFPreviewWidget : public QWidget {
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit PDFPreviewWidget(QWidget* parent = 0);
|
explicit PDFPreviewWidget(QWidget* parent = 0);
|
||||||
void setImage(QImage image);
|
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
void setImage(QImage image);
|
||||||
|
void regenImage(void);
|
||||||
void pageClicked(QMouseEvent* mouseEvent, QImage image);
|
void pageClicked(QMouseEvent* mouseEvent, QImage image);
|
||||||
|
void previewUpdate(Poppler::Page*);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void paintEvent(QPaintEvent* event);
|
void paintEvent(QPaintEvent* event);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QImage previewImage;
|
QImage previewImage;
|
||||||
|
void resizeEvent(QResizeEvent* event);
|
||||||
|
/*PreviewGen tgen;*/
|
||||||
|
Poppler::Page* pPage;
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void updatePreview(QImage);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -41,6 +41,8 @@ void PDFTableWidget::loadFile(QString fileName) {
|
|||||||
fileWidget->setDocument(doc, fileName);
|
fileWidget->setDocument(doc, fileName);
|
||||||
connect(fileWidget, SIGNAL(pageClicked(QMouseEvent*,QImage)), this,
|
connect(fileWidget, SIGNAL(pageClicked(QMouseEvent*,QImage)), this,
|
||||||
SIGNAL(pageClicked(QMouseEvent*,QImage)));
|
SIGNAL(pageClicked(QMouseEvent*,QImage)));
|
||||||
|
connect(fileWidget, SIGNAL(previewUpdate(Poppler::Page*)), this,
|
||||||
|
SIGNAL(previewUpdate(Poppler::Page*)));
|
||||||
|
|
||||||
fileWidgets.append(fileWidget);
|
fileWidgets.append(fileWidget);
|
||||||
|
|
||||||
|
@ -30,5 +30,6 @@ private:
|
|||||||
|
|
||||||
signals:
|
signals:
|
||||||
void pageClicked(QMouseEvent*, QImage);
|
void pageClicked(QMouseEvent*, QImage);
|
||||||
|
void previewUpdate(Poppler::Page*);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user