Qt图像打印
来源:互联网 发布:零基础学算法 第三版 编辑:程序博客网 时间:2024/06/07 05:09
pic_widget.h
- #ifndef PICWIDGET_H
- #define PICWIDGET_H
-
- #include <QPainter>
- #include <QWidget>
- #include <QPushButton>
- #include <QPrintDialog>
- #include <QPrinter>
- #include <QPainter>
- #include <QRect>
- #include <QImage>
-
- class PicWidget : public QWidget
- {
- Q_OBJECT
- public:
- explicit PicWidget(QWidget *parent = 0);
-
- public slots:
- void slotPrintPic();
- private:
- QPushButton *pintPicBtn;
- QImage img;
- };
-
- #endif //--PICWIDGET_H
pic_widget.cpp- #include "pic_widget.h"
-
- PicWidget::PicWidget(QWidget *parent ) : QWidget(parent)
- {
-
- pintPicBtn = new QPushButton("print", this);
- pintPicBtn->setGeometry(70, 40, 50, 30);
- connect(pintPicBtn, SIGNAL(clicked()), this, SLOT(slotPrintPic()));
-
-
- img.load(":/1");
-
-
- resize(200, 100);
- }
-
-
- void PicWidget::slotPrintPic()
- {
- QPrinter printer;
- QPrintDialog printDlg(&printer, this);
- if (printDlg.exec())
- {
- QPainter painter(&printer);
- QRect rect = painter.viewport();
- QSize size = img.size();
- size.scale(rect.size(), Qt :: KeepAspectRatio);
-
-
- painter.setViewport(rect.x(), rect.y(), size.width(), size.height());
- painter.setWindow(img.rect());
- painter.drawImage(0, 0, img);
- }
- }
main.cpp- #include <QtWidgets/QApplication>
- #include "pic_widget.h"
-
-
- int main(int argc, char *argv[])
- {
- QApplication a(argc, argv);
-
- PicWidget win;
- win.show();
-
- return a.exec();
- }