[Add] Testing pdf page to QImage conversion.

[Change] Integrated tableview and files.
This commit is contained in:
Rtch90 2014-12-16 10:53:33 +00:00
parent 60eb0e9f40
commit efbc52cd2a
18 changed files with 182 additions and 27 deletions

View File

@ -9,13 +9,15 @@ LIBS += -L/usr/lib -lpoppler-qt5
HEADERS += \
../src/pdf_factory.h \
../src/pdf_file.h \
../src/pdf_page_widget.h
../src/pdf_page_widget.h \
../src/table_view.h
SOURCES += \
../src/main.cpp \
../src/pdf_factory.cpp \
../src/pdf_file.cpp \
../src/pdf_page_widget.cpp
../src/pdf_page_widget.cpp \
../src/table_view.cpp
RESOURCES += hpdf.qrc

View File

@ -1,12 +1,13 @@
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>../img/cut.png</file>
<file>../img/myeditor.png</file>
<file>../img/open.png</file>
<file>../img/paste.png</file>
<file>../img/save.png</file>
<file>../img/copy.png</file>
<file>../img/new.png</file>
<file>../img/saveas.png</file>
</qresource>
<RCC>
<qresource prefix="/">
<file>../img/cut.png</file>
<file>../img/open.png</file>
<file>../img/paste.png</file>
<file>../img/copy.png</file>
<file>../img/new.png</file>
<file>../img/export.png</file>
<file>../img/exportall.png</file>
<file>../img/pdffactory.png</file>
<file>../img/about.png</file>
</qresource>
</RCC>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

BIN
img/img.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 470 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 963 B

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1014 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -2,6 +2,7 @@
#include <QtGlobal>
#include "pdf_factory.h"
#include "pdf_file.h"
#include "table_view.h"
#include "pdf_page_widget.h"
PDFFactory::PDFFactory(void) {
@ -32,13 +33,19 @@ void PDFFactory::createWidgets(void) {
layout->addWidget(ribbon);
/* Create main area (table). */
pdfTableView = new QWidget();
pdfTableView->setLayout(new QVBoxLayout());
pdfTableView = new TableView();
/*pdfTableView->setLayout(new QVBoxLayout());*/
/*pdfTableView->setMinimumSize(1000, 1000);*/
pdfTableView->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
scrollArea = new QScrollArea();
scrollArea->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
layout->addWidget(scrollArea);
pdfSplitter = new QSplitter();
/* TODO: change pdfPreview widget. */
pdfPreview = new QWidget();
pdfPreview->setMinimumWidth(100);
pdfSplitter->setOrientation(Qt::Horizontal);
pdfSplitter->addWidget(pdfTableView);
pdfSplitter->addWidget(pdfPreview);
layout->addWidget(pdfSplitter);
/*PDFFile* pdfFile = new PDFFile("/home/docs/loa.pdf");
PDFPageWidget* pdfPage = new PDFPageWidget();
@ -58,13 +65,13 @@ void PDFFactory::createActions(void) {
connect(openAction, SIGNAL(triggered()), this, SLOT(open()));
exportAction = new QAction(tr("&Export"), this);
exportAction->setIcon(QIcon(":/img/save.png"));
exportAction->setIcon(QIcon(":/img/export.png"));
exportAction->setShortcut(tr("Ctrl+S"));
exportAction->setStatusTip(tr("Export the selected frame to a new PDF"));
/*connect(saveAction, SIGNAL(triggered()), this, SLOT(save()))*/
exportAllAction = new QAction(tr("Combine all and export"), this);
exportAllAction->setIcon(QIcon(":/img/saveas.png"));
exportAllAction->setIcon(QIcon(":/img/exportall.png"));
exportAllAction->setShortcut(tr("Shift+Ctrl+S"));
exportAllAction->setStatusTip(tr("Combine all and export as one PDF"));
/*connect(saveAsAction, SIGNAL(triggered()), this, SLOT(saveAs()))*/

View File

@ -1,10 +1,12 @@
#pragma once
#include <QMainWindow>
#include "table_view.h"
class QAction;
class QWidget;
class QTabWidget;
class QScrollArea;
class QSplitter;
class PDFFactory : public QMainWindow {
Q_OBJECT
@ -36,9 +38,11 @@ private:
QWidget* centralWidget;
QTabWidget* ribbon;
QScrollArea* scrollArea;
QWidget* pdfTableView;
QTabWidget* ribbon;
QScrollArea* scrollArea;
TableView* pdfTableView;
QSplitter* pdfSplitter;
QWidget* pdfPreview;
QToolBar* fileToolBar;
QToolBar* editToolBar;

View File

@ -4,7 +4,52 @@
PDFPageWidget::PDFPageWidget(QWidget* parent) :
QWidget(parent) {
this->resize(500, 600);
/* Resize widget. */
this->resize(500, 500);
this->setMinimumHeight(500);
this->setMouseTracking(true);
this->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
/* Initialize buttons. */
/*button = new QPushButton();
QPushButton* btn = new QPusBbutton();
QGridLayout* lo = new QGridLayout();
btn->setFixedSize(100, 100);
qDebug() << btn->geometry();
*lo->addWidget(btn);*/
QVBoxLayout* vbox = new QVBoxLayout(this);
QHBoxLayout* hbox = new QHBoxLayout();
btn1 = new QPushButton("", this);
btn1->setObjectName("new");
btn2 = new QPushButton("", this);
btn2->setObjectName("open");
QPixmap pm, pm2;
pm.load("../img/new.png");
pm2.load("../img/open.png");
btn1->setIcon(pm);
btn2->setIcon(pm2);
btn1->hide();
btn2->hide();
hbox->addWidget(btn1, 1, Qt::AlignRight);
hbox->addWidget(btn2, 0, Qt::AlignLeft);
vbox->addStretch(1);
vbox->addLayout(hbox);
this->setLayout(vbox);
this->setPageImage(new QImage("../img/img.jpg"));
}
void PDFPageWidget::setButton(QPushButton* btn) {
button = btn;
update();
}
void PDFPageWidget::setPageImage(QImage* pageImage) {
@ -13,8 +58,18 @@ void PDFPageWidget::setPageImage(QImage* pageImage) {
update();
}
void PDFPageWidget::paintEvent(QPaintEvent* event) {
QPainter painter(this);
painter.drawPixmap(QRect(0, 0, pixmap.width(), pixmap.height()), pixmap);
void PDFPageWidget::leaveEvent(QEvent* event) {
btn1->hide();
btn2->hide();
}
void PDFPageWidget::enterEvent(QEvent* event) {
btn1->show();
btn2->show();
}
void PDFPageWidget::paintEvent(QPaintEvent* event) {
QPainter painter(this);
painter.drawPixmap(QRect(0, 0, width(), height()), pixmap);
}

View File

@ -1,5 +1,7 @@
#pragma once
#include <QWidget>
#include <QPushButton>
#include <QVector>
class QImage;
class QPixmap;
@ -10,12 +12,19 @@ class PDFPageWidget : public QWidget {
public:
PDFPageWidget(QWidget* parent = 0);
void setPageImage(QImage* pageImage);
void setButton(QPushButton* btn);
/*void setButtonImage(QImage* pageImage);*/
protected:
void paintEvent(QPaintEvent* event);
void enterEvent(QEvent* event);
void leaveEvent(QEvent* event);
private:
/*QVector<QPushButton> buttons;*/
QPushButton* button;
QImage* image;
QPixmap pixmap;
QPushButton* btn1, *btn2;
};

46
src/table_view.cpp Normal file
View File

@ -0,0 +1,46 @@
#include <QtWidgets>
#include <QWidget>
#include <assert.h>
#include "table_view.h"
#include "pdf_page_widget.h"
PDFPageWidget* test[10];
TableView::TableView(QWidget* parent) : QWidget(parent) {
outerLayout = new QVBoxLayout();
scrollArea = new QScrollArea();
frame = new QFrame(scrollArea);
layout = new QVBoxLayout();
setLayout(outerLayout);
outerLayout->addWidget(scrollArea);
scrollArea->setWidget(frame);
frame->setLayout(layout);
frame->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
int i = 0;
/* TODO: Page widget is placed for testing only.
* To remove pagewidget and add filewidgets later,
* use QVector<PDFFile> files to store files.
*/
for(i = 0; i < 10; i++) {
test[i] = new PDFPageWidget();
test[i]->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
layout->addWidget(test[i]);
}
/* End TODO. */
frame->adjustSize();
}
void TableView::paintEvent(QPaintEvent* event) {
frame->adjustSize();
int newWidth = width();
for(int i = 0; i < 10; i++) {
test[i]->resize(newWidth, test[i]->height());
}
frame->resize(newWidth, frame->height());
}

31
src/table_view.h Normal file
View File

@ -0,0 +1,31 @@
#pragma once
#include <QWidget>
#include <QSplitter>
#include <QVBoxLayout>
#include <QScrollArea>
#include <QPushButton>
#include <QFrame>
#include "pdf_page_widget.h"
#include "pdf_file.h"
class QPushButton;
class QWidget;
class QScrollArea;
class TableView : public QWidget {
Q_OBJECT
public:
TableView(QWidget* parent = 0);
QVector<PDFFile> files;
protected:
private:
QScrollArea* scrollArea;
QVBoxLayout* layout;
QFrame* frame;
QVBoxLayout* outerLayout;
void paintEvent(QPaintEvent* event);
};