Qt浅谈之八:富文本转换成pdf
来源:互联网 发布:仓管要会什么软件 编辑:程序博客网 时间:2024/06/16 02:33
一、简介
Qt对富文本的处理,主要有几个感兴趣的知识点才写下这篇文章,将文本或图片转换成pdf格式、文件直接拖拽到文本框中、双击对程序全屏和缩小、滚动滑轮对文字放大缩小及安装事件过滤器通过键盘的上下按键对文本放大缩小。
二、运行图
(1)运行效果图如下图1所示。
三、详解
1、文本文件转换成pdf
- void MainWindow::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);
- }
- }
2、拖放功能
- // 拖动进入事件
- void MainWindow::dragEnterEvent(QDragEnterEvent *event)
- {
- // 数据中是否包含URL,如果是则接收动作,否则忽略该事件
- if(event->mimeData()->hasUrls()) {
- event->acceptProposedAction();
- }
- else event->ignore();
- }
- // 放下事件
- void MainWindow::dropEvent(QDropEvent *event)
- {
- // 获取MIME数据
- const QMimeData *mimeData = event->mimeData();
- // 如果数据中包含URL
- if(mimeData->hasUrls()){
- // 获取URL列表
- QList<QUrl> urlList = mimeData->urls();
- // 将其中第一个URL表示为本地文件路径
- QString fileName = urlList.at(0).toLocalFile();
- QFileInfo info(fileName);
- // 如果文件路径不为空
- if(!fileName.isEmpty()){
- // 建立QFile对象并且以只读方式打开该文件
- QFile file(fileName);
- if(!file.open(QIODevice::ReadOnly)) return;
- // 建立文本流对象
- QTextStream in(&file);
- // 将文件中所有内容读入编辑器
- setWindowTitle(tr("文件转换:%1").arg(info.fileName()));
- ui->textEdit->setText(in.readAll());
- }
- }
- }
3、全屏
- // 鼠标双击事件
- void MainWindow::mouseDoubleClickEvent(QMouseEvent *event)
- {
- // 如果是鼠标左键按下
- if(event->button() == Qt::LeftButton){
- // 如果现在不是全屏,将窗口设置为全屏
- if(windowState() != Qt::WindowFullScreen)
- setWindowState(Qt::WindowFullScreen);
- // 如果现在已经是全屏状态,那么恢复以前的大小
- else setWindowState(Qt::WindowNoState);
- }
- }
4、滚轮放大缩小
- // 滚轮事件
- void MainWindow::wheelEvent(QWheelEvent *event)
- {
- // 当滚轮远离使用者时进行放大,当滚轮向使用者方向旋转时进行缩小
- if(event->delta() > 0){
- ui->textEdit->zoomIn();
- }else{
- ui->textEdit->zoomOut();
- }
- }
5、方向键上下放大缩小
在MainWindow上为lineEdit安装事件过滤器, ui->textEdit->installEventFilter(this);
- bool MainWindow::eventFilter(QObject *obj, QEvent *event)
- {
- // // 事件过滤器
- // // 如果是textEdit部件上的事件
- if(obj == ui->textEdit){
- if(event->type() == QEvent::KeyPress) {
- QKeyEvent *kevent = dynamic_cast<QKeyEvent *>(event);
- if (kevent->key() == Qt::Key_Down) {
- ui->textEdit->zoomOut();
- }
- else if(kevent->key() == Qt::Key_Up) {
- ui->textEdit->zoomIn();
- }
- }
- }
- return QMainWindow::eventFilter(obj,event);
- }
0 0
- Qt浅谈之八:富文本转换成pdf
- Qt浅谈之八:富文本转换成pdf
- QT:富文本转换成pdf
- Qt富文本之QTextFrame
- Qt之QTableView显示富文本
- qt 富文本 打印
- Qt富文本处理
- Qt富文本处理
- iOS之富文本
- iOS之富文本
- ios之富文本
- iOS之富文本
- iOS之富文本
- iOS之富文本
- iOS之富文本
- iOS之富文本
- iOS之富文本
- iOS之富文本
- 几个有用的PHP.ini配置项-语法突出
- 几个有用的PHP.ini配置项-资源限制
- 几个有用的PHP.ini配置项-数据处理
- 几个有用的PHP.ini配置项-路径和目录
- 几个有用的PHP.ini配置项-Fopen包装器
- Qt浅谈之八:富文本转换成pdf
- PHP代码格式
- STL 之set和multiset(江南烟雨)
- PHP代码添加注释的几种格式
- PHP向浏览器输出数据的命令
- PHP的数据类型、类型转换及相关函数
- PHP变量
- PHP提供的预定义变量数组
- PHP的可变变量