国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

QT如何實現調用打印機來打印html中的網頁及文件

來源:懂視網 責編:小采 時間:2020-11-27 15:25:35
文檔

QT如何實現調用打印機來打印html中的網頁及文件

QT如何實現調用打印機來打印html中的網頁及文件:這篇文章介紹的內容是QT如何實現調用打印機來打印html中的網頁及文件,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下工程里用到 QWebView, 所以要在.pro里加上 QT += webkit webkitwidgets 打印用到了 QPrinter, 所以要在.p
推薦度:
導讀QT如何實現調用打印機來打印html中的網頁及文件:這篇文章介紹的內容是QT如何實現調用打印機來打印html中的網頁及文件,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下工程里用到 QWebView, 所以要在.pro里加上 QT += webkit webkitwidgets 打印用到了 QPrinter, 所以要在.p

這篇文章介紹的內容是QT如何實現調用打印機來打印html中的網頁及文件,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

工程里用到 QWebView,

所以要在.pro里加上 QT += webkit webkitwidgets
打印用到了 QPrinter,
所以要在.pro里加上 qtHaveModule(printsupport): QT += printsupport

直接附上源碼吧,當然也是根據網上一些前輩的經驗代碼和實際使用情況改進而來:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTableWidget>
#include <QPainter>
#include <QtPrintSupport/QPrinter>
#include <QtPrintSupport/QPrintDialog>
#include <QFileInfo>
#include <windows.h>
#include <QFileDialog>
#include <QtPrintSupport/QPrintPreviewDialog>
#include <QtPrintSupport/QPageSetupDialog>
#include <fstream>
#include <iostream>
#include <sstream>
#include <QWebView>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
 Q_OBJECT
public: 
 explicit Widget(QWidget *parent = 0);
 ~Widget();
 
private slots:
 void on_pushButton_clicked(); 
 void printPreview(QPrinter *printer);
private:
 Ui::Widget *ui; 
 void doPrint(); 
 void doPrintPreview(); 
 void createPdf(); 
 void setUpPage(); 
 bool printFile(const QString & filePath);

};

實現:

#include "Widget.h"
#include "ui_Widget.h"

Widget::Widget(QWidget *parent) :
 QWidget(parent),
 ui(new Ui::Widget)
{
 ui->setupUi(this); //這里沒用QFile文件讀html文件,因為會使html網頁中文成亂碼
 QString strHtmltext; 
 std::string bufStr; 
 std::ifstream readFile;
 readFile.open("D:\\qqq.html"); 
 if(readFile.is_open())
 { 
 while(getline(readFile, bufStr))
 {
 strHtmltext += QString(bufStr.data());
 }
 readFile.close();
 }
 ui->webView->setHtml(strHtmltext);

}

Widget::~Widget()
{ delete ui;
}//點擊這里觸發打印動作!
void Widget::on_pushButton_clicked()
{

 doPrint();
// doPrintPreview();
// printFile("D:/123.txt");
}

void Widget::doPrint()
{ 
 // 創建打印機對象
 QPrinter printer; 
 // 創建打印對話框
 QString printerName = printer.printerName(); 
 if( printerName.size() == 0) 
 return;
 QPrintDialog dlg(&printer, this);#if 0
 //如果編輯器中有選中區域,則打印選中區域
 if (ui->textEdit->textCursor().hasSelection())
 dlg.addEnabledOption(QAbstractPrintDialog::PrintSelection);
#endif
 // 如果在對話框中按下了打印按鈕,則執行打印操作
// if (dlg.exec() == QDialog::Accepted)
 //這里使用默認打印機,不用每次選擇打印機
 {
// ui->textEdit->print(&printer);
 ui->webView->print(&printer); 
 
 // print the existing document by absoult path
 // printFile("D:/myRSM.doc");
 }
}
// 打印預覽void Widget::doPrintPreview()
{
 QPrinter printer; 
 // 創建打印預覽對話框
 QPrintPreviewDialog preview(&printer, this); 
 // 當要生成預覽頁面時,發射paintRequested()信號
 connect(&preview, SIGNAL(paintRequested(QPrinter*)),this,SLOT(printPreview(QPrinter*)));
 preview.exec();
}

void Widget::printPreview(QPrinter *printer)
{
// ui->textEdit->print(printer);
 ui->webView->print(printer);
}

// 生成PDF文件
void Widget::createPdf()
{
 QString fileName = QFileDialog::getSaveFileName(this, tr("導出PDF文件"), QString(), "*.pdf"); 
 if (!fileName.isEmpty()) { 
 // 如果文件后綴為空,則默認使用.pdf
 if (QFileInfo(fileName).suffix().isEmpty())
 fileName.append(".pdf");
 QPrinter printer; 
 // 指定
輸出格式為pdf printer.setOutputFormat(QPrinter::PdfFormat); printer.setOutputFileName(fileName); // ui->textEdit->print(&printer); ui->webView->print(&printer); } } // 頁面設置void Widget::setUpPage() { QPrinter printer; QPageSetupDialog pageSetUpdlg(&printer, this); if (pageSetUpdlg.exec() == QDialog::Accepted) { printer.setOrientation(QPrinter::Landscape); } else { printer.setOrientation(QPrinter::Portrait); } } bool Widget::printFile(const QString & filePath) { // create a printer QPrinter printer; QString printerName = printer.printerName(); // no default printer or no file return false if( printerName.size() == 0 || filePath.size() == 0) return false; QFileInfo fi(filePath); if(!fi.exists()) return false; int ret = 0; //執行DOS命令調系統打印 ret = (int)ShellExecuteW(NULL, QString("print").toStdWString().c_str(), filePath.toStdWString().c_str(), NULL, NULL, SW_HIDE); // if return number bigger than 31 indicate succ if (ret > SE_ERR_NOASSOC) return true; return false; }

相關推薦:

HTML網頁打印

使用JavaScript實現頁面打印

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

QT如何實現調用打印機來打印html中的網頁及文件

QT如何實現調用打印機來打印html中的網頁及文件:這篇文章介紹的內容是QT如何實現調用打印機來打印html中的網頁及文件,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下工程里用到 QWebView, 所以要在.pro里加上 QT += webkit webkitwidgets 打印用到了 QPrinter, 所以要在.p
推薦度:
標簽: 文件 打印 網頁
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 综合欧美日韩 | 久久久久久久久久久9精品视频 | 欧美日韩网址 | 亚洲码欧美码一区二区三区 | 大香伊人中文字幕精品 | 精品国产综合成人亚洲区 | 精品国产91乱码一区二区三区 | 一级大黄毛片 | 天堂va欧美ⅴa亚洲va一国产 | 成人国产一区二区三区精品 | 视频二区 素人 欧美 日韩 | 99久久国产综合精品成人影院 | 国产欧美曰韩一区二区三区 | 国产精品免费精品自在线观看 | 日韩精品成人在线 | 国产精品 视频一区 二区三区 | 国产精品麻豆a在线播放 | 日日碰日日摸日日澡视频播放 | 成人免费一级毛片在线播放视频 | 欧美成人伊人久久综合网 | 亚洲网站免费 | 国产亚洲欧美另类一区二区三区 | 亚洲第一页色 | 亚洲欧美日韩综合精品网 | 国产精品久久久久久久y | 久久91精品国产91久久小草 | 亚洲一区在线播放 | www国产精品 | 亚洲国产成人久久综合碰 | 一区二区三区观看 | 日韩高清第一页 | 国产亚洲精品国产 | 欧美成人一区二区三区在线视频 | 久久91精品国产91 | 国内偷自第一二三区 | 亚洲欧美激情另类 | 精品欧美一区二区在线观看欧美熟 | 91久久国产口精品久久久久 | 欧美视频精品一区二区三区 | 国产播放器一区 | 亚洲十欧美十日韩十国产 |