没有合适的资源?快使用搜索试试~ 我知道了~
Qt实现保存、浏览、预览、打印功能的示例代码
60 下载量 76 浏览量
2020-08-28
05:49:29
上传
评论 3
收藏 67KB PDF 举报
温馨提示


试读
3页
下面小编就为大家分享一篇Qt实现保存、浏览、预览、打印功能的示例代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
资源推荐
资源详情
资源评论









Qt实现保存、浏览、预览、打印功能的示例代码实现保存、浏览、预览、打印功能的示例代码
下面小编就为大家分享一篇Qt实现保存、浏览、预览、打印功能的示例代码,具有很好的参考价值,希望对大
家有所帮助。一起跟随小编过来看看吧
Qt提供了以文本、图片、HTML等方式来实现对文档的操作,主要用到了QPrinter类和QPainter类,用到了QFileDialog文件窗
口、QPrintPreviewDialog预览窗口类和QPrintDialog打印窗口类,Qt5也提供了QPdfWriter类来实现对pdf的操作,这里并不包
括打开pdf文件,Qt没有提供任何方法来直接像文件浏览器一样打开pdf文件,可以用第三方库来实现。
这里采用了图片的方式来实现保存、预览和打印,其实 三个功能基本上一样。
1、保存、保存PDF
((1)保存某个控件里的内容)保存某个控件里的内容
一些输入类控件可以直接调用print()函数,一些显示类的控件可以直接调用render()函数,一些控件不具备这个功能。代码如
下:
void MainWindow::on_btnSave_clicked()
{
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->tableWidget->render(&printer);
}
}
((2)保存某些控件里的内容)保存某些控件里的内容
这里需要将要保存的所有内容放在一个容器里面,比如放在QWidget上,同样可以用上面的方式来保存,下面用的是以图片的
方式来保存。代码如下:
void MainWindow::on_btnSave_clicked()
{
QString fileName = QFileDialog::getSaveFileName(this, tr("保存PDF文件"), QString(), "*.pdf");
if (!fileName.isEmpty())
{
// 如果文件后缀为空,则默认使用.pdf
if (QFileInfo(fileName).suffix().isEmpty())
{
fileName.append(".pdf");
}
QPrinter printerPixmap(QPrinter::HighResolution);
//自定义纸张大小,这里要打印的内容都在stackedWidget上
printerPixmap.setPageSize(QPrinter::Custom);
printerPixmap.setPaperSize(QSizeF(ui->stackedWidget->height(), ui->stackedWidget->width()), QPrinter::Point);
//设置纸张大小为A4,这里注释掉了,建议自定义纸张 ,否则保存的就会有很多空白
//printerPixmap.setPageSize(QPrinter::A4);
//横向打印
printerPixmap.setOrientation(QPrinter::Landscape);
//设置输出格式为pdf
printerPixmap.setOutputFormat(QPrinter::PdfFormat);
//设置输出路径
printerPixmap.setOutputFileName(fileName);
//获取界面的图片
QPixmap pixmap = QPixmap::grabWidget(ui->stackedWidget, ui->stackedWidget->rect());
QPainter painterPixmap;
painterPixmap.begin(&printerPixmap);
QRect rect = painterPixmap.viewport();
int x = rect.width() / pixmap.width();
int y = rect.height() / pixmap.height();
//将图像(所有要画的东西)在pdf上按比例尺缩放
painterPixmap.scale(x, y);
//画图
painterPixmap.drawPixmap(0, 0, pixmap);
painterPixmap.end();
QMessageBox::information(this, tr("生成PDF"), tr("保存PDF文件成功"), QMessageBox::Ok);
资源评论


weixin_38576922
- 粉丝: 6
- 资源: 905
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


安全验证
文档复制为VIP权益,开通VIP直接复制
