日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

QPrintPreviewDialog 打印预览使用实例

發布時間:2023/12/8 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QPrintPreviewDialog 打印预览使用实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

QT的打印機相關的類需要使用printsupport庫,其實底層都是使用cups進行打印的。

QT += core gui printsupport

mainwindow.h

#ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QPrinter> class QPushButton; class QHBoxLayout; class MainWindow : public QMainWindow {Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();QHBoxLayout *m_mainLayout;QWidget *m_main;QPushButton *m_btn;public slots:void clickPrinter();void slotPrintReviewPaint(QPrinter *printer); };#endif // MAINWINDOW_H QPrinter中有很多屬性可以設置,但是有些打印機可能不支持這些設置,導致打印預覽有很多問題。

mainwindow.cpp

#include "mainwindow.h" #include <QPushButton> #include <QWidget> #include <QHBoxLayout> #include <QPrinter> #include <QPainter> #include <QPrintPreviewDialog> MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), m_mainLayout(new QHBoxLayout(this)), m_main(new QWidget(this)), m_btn(new QPushButton("打印預覽", m_main)){m_main->setLayout(m_mainLayout);m_mainLayout->addWidget(m_btn);connect(m_btn, &QPushButton::clicked, this, &MainWindow::clickPrinter);setCentralWidget(m_main); }void MainWindow::clickPrinter() {QPrinter printer;//----------------- 設置打印機屬性 -------------// 打印預覽不生效printer.setDuplex(QPrinter::DuplexLongSide);printer.setPageSize(QPrinter::A3);// 打印預覽生效printer.setDoubleSidedPrinting(true);printer.setOrientation(QPrinter::Landscape);printer.setNumCopies(5);printer.setFromTo(2, 5);QPrintPreviewDialog pdlg(&printer);// 打印繪制消息connect(&pdlg, SIGNAL(paintRequested(QPrinter *)),SLOT(slotPrintReviewPaint(QPrinter *)));pdlg.exec(); }void MainWindow::slotPrintReviewPaint(QPrinter *printer) {QPainter p(printer);int pageNum = 5;for (int i = 0; i < pageNum; i++) {if (i != 0) printer->newPage(); // 支持多頁打印p.drawText(100, 100, "asdfa" + QString::number(i));} }MainWindow::~MainWindow() {}

函數slotPrintReviewPaint(QPrinter *printer)很重要,你想要打印機的數據都可以在這里進行繪制,

最終你繪制的內容都會被打印出來。

QPrinter::newPage()用來新建一個頁面。

git傳送門

總結

以上是生活随笔為你收集整理的QPrintPreviewDialog 打印预览使用实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。