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