print preview
This commit is contained in:
+87
-18
@@ -13,9 +13,12 @@
|
||||
#include <QPrinter>
|
||||
#include <QPrinterInfo>
|
||||
#include <QPrintDialog>
|
||||
#include <QPrintPreviewWidget>
|
||||
#include <QPageSetupDialog>
|
||||
#include <QPainter>
|
||||
|
||||
#include <QDebug>
|
||||
|
||||
|
||||
cPrint::cPrint(QProgressBar* lpProgressBar, QListView* lpSelectedList, QStandardItemModel* lpSelectedListModel, QWidget *parent) :
|
||||
QWidget(parent),
|
||||
@@ -31,28 +34,66 @@ cPrint::cPrint(QProgressBar* lpProgressBar, QListView* lpSelectedList, QStandard
|
||||
QString defaultPrinter = QPrinterInfo::defaultPrinterName();
|
||||
QStringList availablePrinters = QPrinterInfo::availablePrinterNames();
|
||||
|
||||
m_lpPrinter->setPrinterName(defaultPrinter);
|
||||
onPrinterChanged(defaultPrinter);
|
||||
|
||||
ui->m_lpPrinterSelect->addItems(availablePrinters);
|
||||
ui->m_lpPrinterSelect->setCurrentText(defaultPrinter);
|
||||
|
||||
connect(ui->m_lpPrinterSettings, &QPushButton::clicked, this, &cPrint::onPrinterSettings);
|
||||
connect(ui->m_lpPrint, &QPushButton::clicked, this, &cPrint::onPrint);
|
||||
m_lpPrintPreviewWidget = new QPrintPreviewWidget(m_lpPrinter, this);
|
||||
m_lpPrintPreviewWidget->setObjectName(QString::fromUtf8("m_lpPrintPreviewWidget"));
|
||||
ui->m_lpSplitter->insertWidget(0, m_lpPrintPreviewWidget);
|
||||
|
||||
connect(ui->m_lpPrinterSelect, &QComboBox::currentTextChanged, this, &cPrint::onPrinterChanged);
|
||||
connect(ui->m_lpPrinterSettings, &QPushButton::clicked, this, &cPrint::onPrinterSettings);
|
||||
connect(ui->m_lpPrintPreview, &QPushButton::clicked, this, &cPrint::onPrintPreview);
|
||||
connect(ui->m_lpPrint, &QPushButton::clicked, this, &cPrint::onPrint);
|
||||
|
||||
connect(m_lpPrintPreviewWidget, &QPrintPreviewWidget::paintRequested, this, &cPrint::onPaintRequested);
|
||||
}
|
||||
|
||||
cPrint::~cPrint()
|
||||
{
|
||||
if(m_lpPrintPreviewWidget)
|
||||
delete m_lpPrintPreviewWidget;
|
||||
|
||||
if(m_lpPrinter)
|
||||
delete m_lpPrinter;
|
||||
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void cPrint::onPrinterSettings()
|
||||
void cPrint::onPrinterChanged(const QString& printer)
|
||||
{
|
||||
QPageSetupDialog pageSetupDialog(m_lpPrinter);
|
||||
pageSetupDialog.exec();
|
||||
m_lpPrinter->setPrinterName(printer);
|
||||
|
||||
QPrinterInfo printerInfo(*m_lpPrinter);
|
||||
|
||||
ui->m_lpPrinterMakeAndModel->setText(printerInfo.makeAndModel());
|
||||
}
|
||||
|
||||
void cPrint::onPrint()
|
||||
void cPrint::onPrinterSettings()
|
||||
{
|
||||
QPrintDialog printDialog(m_lpPrinter);
|
||||
printDialog.exec();
|
||||
|
||||
// QPageSetupDialog pageSetupDialog(m_lpPrinter);
|
||||
// pageSetupDialog.exec();
|
||||
}
|
||||
|
||||
void cPrint::onPrintPreview()
|
||||
{
|
||||
if(!m_lpSelectedListModel->rowCount())
|
||||
return;
|
||||
|
||||
cFileViewer* lpFileViewer = static_cast<cFileViewer*>(m_lpSelectedList->indexWidget(m_lpSelectedListModel->index(0, 0)));
|
||||
if(!lpFileViewer)
|
||||
return;
|
||||
|
||||
m_lpPrintPreviewWidget->updatePreview();
|
||||
}
|
||||
|
||||
void cPrint::onPaintRequested(QPrinter* printer)
|
||||
{
|
||||
if(!m_lpSelectedListModel->rowCount())
|
||||
return;
|
||||
@@ -67,18 +108,46 @@ void cPrint::onPrint()
|
||||
if(image.isNull())
|
||||
return;
|
||||
|
||||
printer->newPage();
|
||||
|
||||
QPixmap pixmap = QPixmap::fromImage(image);
|
||||
QPrintDialog printDialog(m_lpPrinter, this);
|
||||
QPainter painter(printer);
|
||||
QRect rect = painter.viewport();
|
||||
QSize size = pixmap.size();
|
||||
|
||||
if(printDialog.exec())
|
||||
{
|
||||
QPainter painter(m_lpPrinter);
|
||||
QRect rect = painter.viewport();
|
||||
QSize size = pixmap.size();
|
||||
|
||||
size.scale(rect.size(), Qt::KeepAspectRatio);
|
||||
painter.setViewport(rect.x(), rect.y(), size.width(), size.height());
|
||||
painter.setWindow(pixmap.rect());
|
||||
painter.drawPixmap(0, 0, pixmap);
|
||||
}
|
||||
size.scale(rect.size(), Qt::KeepAspectRatio);
|
||||
painter.setViewport(rect.x(), rect.y(), size.width(), size.height());
|
||||
painter.setWindow(pixmap.rect());
|
||||
painter.drawPixmap(0, 0, pixmap);
|
||||
}
|
||||
|
||||
void cPrint::onPrint()
|
||||
{
|
||||
// if(!m_lpSelectedListModel->rowCount())
|
||||
// return;
|
||||
|
||||
// cFileViewer* lpFileViewer = static_cast<cFileViewer*>(m_lpSelectedList->indexWidget(m_lpSelectedListModel->index(0, 0)));
|
||||
// if(!lpFileViewer)
|
||||
// return;
|
||||
|
||||
// QString fileName = lpFileViewer->fileName();
|
||||
// cImage image(fileName);
|
||||
|
||||
// if(image.isNull())
|
||||
// return;
|
||||
|
||||
// QPixmap pixmap = QPixmap::fromImage(image);
|
||||
// QPrintDialog printDialog(m_lpPrinter, this);
|
||||
|
||||
// if(printDialog.exec())
|
||||
// {
|
||||
// QPainter painter(m_lpPrinter);
|
||||
// QRect rect = painter.viewport();
|
||||
// QSize size = pixmap.size();
|
||||
|
||||
// size.scale(rect.size(), Qt::KeepAspectRatio);
|
||||
// painter.setViewport(rect.x(), rect.y(), size.width(), size.height());
|
||||
// painter.setWindow(pixmap.rect());
|
||||
// painter.drawPixmap(0, 0, pixmap);
|
||||
// }
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include <QStandardItemModel>
|
||||
|
||||
#include <QPrinter>
|
||||
#include <QPrintPreviewWidget>
|
||||
|
||||
|
||||
namespace Ui {
|
||||
@@ -45,14 +46,23 @@ public:
|
||||
~cPrint();
|
||||
|
||||
private:
|
||||
Ui::cPrint* ui; /*!< TODO: describe */
|
||||
QProgressBar* m_lpProgressBar; /*!< TODO: describe */
|
||||
QListView* m_lpSelectedList; /*!< TODO: describe */
|
||||
QStandardItemModel* m_lpSelectedListModel; /*!< TODO: describe */
|
||||
Ui::cPrint* ui; /*!< TODO: describe */
|
||||
QProgressBar* m_lpProgressBar; /*!< TODO: describe */
|
||||
QListView* m_lpSelectedList; /*!< TODO: describe */
|
||||
QStandardItemModel* m_lpSelectedListModel; /*!< TODO: describe */
|
||||
|
||||
QPrinter* m_lpPrinter; /*!< TODO: describe */
|
||||
QPrinter* m_lpPrinter; /*!< TODO: describe */
|
||||
QPrintPreviewWidget* m_lpPrintPreviewWidget; /*!< TODO: describe */
|
||||
|
||||
private slots:
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn onPrinterChanged
|
||||
\param printer
|
||||
*/
|
||||
void onPrinterChanged(const QString& printer);
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
@@ -62,9 +72,23 @@ private slots:
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn onPrintPreview
|
||||
*/
|
||||
void onPrintPreview();
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn onPrint
|
||||
*/
|
||||
void onPrint();
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn onPaintRequested
|
||||
\param printer
|
||||
*/
|
||||
void onPaintRequested(QPrinter* printer);
|
||||
};
|
||||
|
||||
#endif // CPRINT_H
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>400</width>
|
||||
<height>300</height>
|
||||
<width>578</width>
|
||||
<height>427</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
@@ -15,22 +15,40 @@
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0">
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<layout class="QVBoxLayout" name="verticalLayout" stretch="1,0">
|
||||
<item>
|
||||
<widget class="QComboBox" name="m_lpPrinterSelect"/>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer">
|
||||
<widget class="QSplitter" name="m_lpSplitter">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
<widget class="QWidget" name="">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QComboBox" name="m_lpPrinterSelect"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="m_lpPrinterMakeAndModel">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
@@ -41,6 +59,13 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="m_lpPrintPreview">
|
||||
<property name="text">
|
||||
<string>preview</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="m_lpPrint">
|
||||
<property name="text">
|
||||
|
||||
Reference in New Issue
Block a user