1.先看效果图

可以设置文字的属性、文字颜色、字体类型。以下示例仅供参考,有的地方还是不完善。

2.需要用到的类

2.1字体选择下拉框:QFontComboBox。

QFontComboBox是一个让用户选择字体的组合框。组合框中填充了按字母顺序排列的字体族名称列表。

常用方法:

获取当前的字体

QFont currentFont() const

还有一个信号,当字体发生改变时,发送信号。

void currentFontChanged(const QFont &font)

2.2颜色对话框:QColorDialog

常用方法:

获取当前选择的颜色

QColor currentColor() const

2.3QTextCharFormat

QTextCharFormat类为QTextDocument中的字符提供格式化信息。换句话说,我们要设置鼠标选中字体的属性,就需要使用这个类。

本例子中使用的方法:

void setFont(const QFont &font) 设置字体
void setFontItalic(bool italic) 设置是否斜体
void setFontStrikeOut(bool strikeOut) 设置删除线
void setFontUnderline(bool underline) 设置下划线

3.源码

为了方便,我定义了5个全局变量

bool isBold = false;    //是否粗体
bool isUnderLine = false; //是否下划线
bool isDelLine = false; //是否删除线
bool isLean = false; //是否斜体QColor color(Qt::black); //字体颜色

设置斜体、粗体等按钮可选中,因为默认是不可选中的,我们需要绑定可选中的信号。

    ui->btnBold->setCheckable(true);ui->btnDelLine->setCheckable(true);ui->btnLean->setCheckable(true);ui->btnUnderline->setCheckable(true);

绑定按钮的信号

void clicked(bool checked = false)

#include "WTextEdit.h"
#include "ui_WTextEdit.h"
#include <QColorDialog>
#include <QTextDocument>
#include <QTextCursor>
#include <QTextCharFormat>
#include <QFont>
#include <QBrush>bool isBold = false;    //是否粗体
bool isUnderLine = false; //是否下划线
bool isDelLine = false; //是否删除线
bool isLean = false; //是否斜体QColor color(Qt::black); //字体颜色WTextEdit::WTextEdit(QWidget *parent) :QWidget(parent),ui(new Ui::WTextEdit)
{ui->setupUi(this);ui->btnBold->setCheckable(true);ui->btnDelLine->setCheckable(true);ui->btnLean->setCheckable(true);ui->btnUnderline->setCheckable(true);
}WTextEdit::~WTextEdit()
{delete ui;
}void WTextEdit::on_btnBold_clicked(bool checked)
{isBold = checked;updateText();
}void WTextEdit::on_btnLean_clicked(bool checked)
{isLean = checked;updateText();
}void WTextEdit::on_btnUnderline_clicked(bool checked)
{isUnderLine = checked;updateText();
}void WTextEdit::on_btnDelLine_clicked(bool checked)
{isDelLine = checked;updateText();
}void WTextEdit::updateText()
{QFont font = ui->fontComboBox->currentFont();font.setBold(isBold);font.setPointSize(ui->lineEdit->text().toInt());QTextCharFormat format;format.setFont(font);format.setFontItalic(isLean);format.setFontStrikeOut(isDelLine);format.setFontUnderline(isUnderLine);QPen pen;pen.setColor(color);    //设置字体颜色format.setTextOutline(pen);ui->textEdit->textCursor().setCharFormat(format);
}void WTextEdit::on_btnColor_clicked()
{QColorDialog dialog;dialog.exec();color = dialog.currentColor();updateText();
}void WTextEdit::on_lineEdit_textChanged(const QString &arg1)
{updateText();
}void WTextEdit::on_fontComboBox_currentFontChanged(const QFont &f)
{updateText();
}

Qt 一个简单的word文档编辑器相关推荐

  1. Aspose.Words简单生成word文档

    Aspose.Words简单生成word文档 Aspose.Words.Document doc = new Aspose.Words.Document(); Aspose.Words.Documen ...

  2. 一个简单的XML文档例子

    一个简单的XML文档例子: <?xml version="1.0"?> <note> <to>Tove</to> <from& ...

  3. 【itext学习之路】--1.创建一个简单的pdf文档

    来源:https://blog.csdn.net/tomatocc/article/details/80666011 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文 ...

  4. 简单合并word文档(转)

    简单合并word文档(转) 将多个Word文档合并为大文档Word文档是目前最常用的一种数据文档,所以研究Word文档的合并具有比较现实的意义. 首先强调一点,就是由于Word本身的强大功能,合并Wo ...

  5. 自己用js做的在线word文档编辑器oarword-doc/docx文档编辑、导出导出

    分享自己用js做的在线word文档编辑器oarword 支持基本doc/docx文档编辑,导出和导出,类似google docs和zoho 源码分享在Github:https://github.com ...

  6. Qt使用html生成word文档

    Qt使用html生成word文档 零.前言 一.效果图 二.核心代码 零.前言 项目中要用到把一些图片和一些报告保存为word文件,今天研究了一下,主要是使用html方法保存为word文档,这对htm ...

  7. html打开一个存在的word文档,html怎么打开本地的Word文档

    1 回答 2021-03-19 浏览:0 分类:办公入门 回答:1. 有关PDF: PDF(Portable Document Format的简称,意为"便携式文档格式"),是由A ...

  8. Qt5编写一个记事本(多文档编辑器)

    目录 一.准备工作 1.1创建工程 1.2创建资源文件(myimages.qrc) 1.3创建界面文件(mainwindow.ui) 二.实现功能 1.1新建c++class类 1.2 MainWin ...

  9. 一张表格分成两页打印_一个表格在Word文档里被分成两页,要怎么合并为一页...

    两页表格合并为一页可以通过调整表格每行的宽度,调整页面边距,或者通过调整表格以上的内容,可以将上面文字内容减少或者调整行距,使下页的表格能上移.具体操作如下: 1.打开word文档后,我们依次点击[页 ...

最新文章

  1. maven repository
  2. 【Python科学计算系列】概率论与数理统计
  3. Java JUC工具类--CyclicBarrier
  4. php csv to array (csv 转数组)
  5. python笔记05_多线程
  6. servlet中文数据存入数据库为乱码的解决办法
  7. 404 错误页面:重装上阵
  8. 套接字的作用与一般使用_05 | 使用套接字进行读写
  9. python连接服务器informix_Python 用odbc连接Informix数据库 64位
  10. 华为android出现短路怎么办,华为手机无法开机原因解析及解决方法
  11. ubuntu下载字体
  12. 微信小程序——云开发实现图片上传到云存储并实时预览当前上传的图片
  13. 坚果云android功能,坚果云是什么有什么功能_坚果云相关功能作用介绍_3DM手游
  14. Bootstrap框架快速上手
  15. winxp下用ssh控制 linux 服务器
  16. torchaudio::is_sox_available关于使用pyinstaller 编译的问题
  17. ie的js调试工具companion.js使用方法
  18. 芯片优缺点_“碳基芯片”的材料,将采用碳纳米管制成,或比传统芯片提升10倍...
  19. 利用python对文件夹中所有图像进行批量增强处理并保存结果
  20. 城市信息模型基础平台(CIM)产品白皮书

热门文章

  1. echarts tooltip层级
  2. 复杂美区块链溯源系统架构
  3. 定义一个名为Cylinder类表示圆柱,它继承Circle类
  4. Arcgis desktop 10及Arcgis Engine 10破解
  5. java老师实例_java实例关于继承求实例,有关学生和老师的程序代码!望诸位软件达人帮忙,谢谢大虾!...
  6. ARMCortex系列仿真调试器
  7. jenkins构建失败后将信息发送到企业微信
  8. Win10家庭中文版开机后弹窗无法登录到你的账户点注销没用(解决过程记录)
  9. 计算机用户注销后不见了,注销当前用户后 Win10找不到Administrator用户登录选项怎么解决?...
  10. xgb.cv进行交叉验证