Qt实现一个简单的word文档编辑器

目录
  • 1.先看效果图
  • 2.需要用到的类
    • 2.1字体选择下拉框:QFontComboBox。
    • 2.2颜色对话框:QColorDialog
    • 2.3QTextCharFormat
  • 3.源码

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文档编辑器的文章就介绍到这了,更多相关Qt word文档编辑器内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Qt实现文本编辑器(一)

    目录 功能实现 动作(QAction)实现 菜单(Menus)实现 工具栏(ToolBars)实现 展示区域 小结(一) 在Qt中QMainWindow是一个为用户提供主窗口程序的类,包含了:菜单栏.工具栏.锚接部件.状态栏以及一个中部件.今天我就来通过实现一个简单的文本编辑器讲解下对QMainWindow的各种功能讲解. 想要完整的实现一个编辑器,所需要的功能还是比较全面的.今天主要来讲解如何构建文本编辑器,包括了:菜单栏.工具栏以及文本编辑区域. 功能实现 在QMainWindow中,菜单与

  • Qt实现文本编辑器(二)

    目录 功能实现 功能: 功能1:动作消息 功能2:动作事件实现 功能3:文本编辑 总结 上一章节讲述了如何制作文本编辑页面,以及应该有哪些功能需要实现,只是做了展示效果,实际的点击事件并没有处理.今天来具体讲解下是如何实现菜单栏以及工具栏上对应的需求吧~ 功能实现 功能: 1.动作消息触发 2.具体功能:打开文件.新建文件.复制.剪切.粘贴 3.文本编辑功能:字体设置 今天只讲述以上三大功能,至于:旋转.缩放等功能都是针对于图片来说的,等下一章节,具体的讲解方式就不在是文本编辑器的功能了,静待后

  • Qt5实现文本编辑器(附详细代码)

    目录 1. 功能介绍 2. 功能演示 3. 代码 4. 改进 1. 功能介绍 老规矩,我们直接上截图 这是主界面 文件菜单界面 编辑菜单界面 设置菜单界面 关于菜单界面 2. 功能演示 设置字体颜色 设置字体大小 点击关于菜单 点击关于Qt菜单 会自动跳转到Qt的官网 点击图片转PDF 打开文件等对话框 3. 代码 我们直接上代码 aboutwidget.h #ifndef ABOUTWIDGET_H #define ABOUTWIDGET_H #include <QWidget> names

  • opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器

    定位色块常用到hsv色彩空间下的颜色阈值,笔者曾经用openmv时,其IDE有自带一个阈值编辑器,使用起来非常方便,现在在linux上跑cv算法,需要类似的功能,因此自己写了一个阈值编辑器. 目前暂时只支持HSV色彩空间下的阈值编辑. 代码: mian.py: from threshold_ui import Ui_Widget from PyQt5.QtWidgets import QApplication from PyQt5.QtGui import QImage,QPixmap,QFon

  • Qt实现一个简单的word文档编辑器

    目录 1.先看效果图 2.需要用到的类 2.1字体选择下拉框:QFontComboBox. 2.2颜色对话框:QColorDialog 2.3QTextCharFormat 3.源码 1.先看效果图 可以设置文字的属性.文字颜色.字体类型.以下示例仅供参考,有的地方还是不完善. 2.需要用到的类 2.1字体选择下拉框:QFontComboBox. QFontComboBox是一个让用户选择字体的组合框.组合框中填充了按字母顺序排列的字体族名称列表. 常用方法: 获取当前的字体 QFont cur

  • C#实现简单合并word文档的方法

    本文实例讲述了C#实现简单合并word文档的方法.分享给大家供大家参考.具体如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Reflection; namespace Demo { p

  • 比较全的一个C#操作word文档示例

    最近两天研究了一下如何使用VS2008(C#语言)输出Word文档.以下是几点总结: 1.非常简单. 2.开发及运行环境要求.操作系统为:WindowsXP(安装.net framework2.0)/Vista/Win7:在操作系统必须安装Word2003完全安装版.这里必须要强调是Word2003完全安装版,因为软件开发及运行都需要一个com组件:Microsoft word 11.0 Object Library.如果不是Word2003完全安装版,可以下载这个com组件,并手动的安装这个c

  • Python实现Word文档转换Markdown的示例

    随着SaaS服务的流行,越来越多的人选择在各个平台上编写文档,制作表格并进行分享. 同时,随着Markdown语法的破圈,很多平台开始集成支持这种简洁的书写标记语言,这样可以保证平台上用户文档样式的统一性. 但是在一些场景下,我们还是会在本地的Office软件上写有很多文档,或者历史遗留了很多本地文档. 如果我们需要将其上传到各大平台,直接复制粘贴,大概率是会造成文档内容结构和样式的丢失.于此我们需要将其转换为 Markdown 语法. 很多桌面软件(比如Typora)都提供了导入 Word 文

  • C#向Word文档中添加内容控件的方法示例

    前言 大家应该都知道在MS Word中,我们可以通过内容控件来向word文档中插入预先定义好的模块,指定模块的内容格式(如图片.日期.列表或格式化的文本等),从而创建一个结构化的word文档. 下面就来看看如何使用C#给word文档添加组合框.文本.图片.日期选取器及下拉列表等内容控件(这里我借助了一个word组件Spire.Doc). 添加组合框内容控件 组合框用于显示用户可以选择的项目列表.和下拉列表不同的是组合框允许用户编辑或添加项. 核心代码如下: //给段落添加一个内容控件并指定它的S

  • nodejs(officegen)+vue(axios)在客户端导出word文档的方法

    前言 我的项目中有一个需求:点击按钮生成可编辑的word文档订单详情的信息 我使用的前端框架是Vue.js.后台使用的是node.js node.js生成和导出word文档我参考的是下面这两篇文章,写的挺好的(github上的那篇里面还有node.js生成word.excel.ppt的example,需要详细的可以看里面) https://www.jb51.net/article/144769.htm https://github.com/Ziv-Barber... 问题 node.js上面这两

  • nodejs实现一个word文档解析器思路详解

    之前项目里遇到一个需求,需要前端上传一个word文档,然后后端提取出该文档的指定位置的内容并保存.这里后端用的是nodejs,开始接到这个需求,发现无从下手,主要是没有处理过word这种类型的文档,怎么解析? Excel倒是有相关的库可以用,而且很简单 思路 搜索了好一会儿,在npm上发现了一个叫做 adm-zip 的包,这个包可以解压缩word文档,原来word文档也是可以解压缩的,之前一直不知道,通过如下代码就可以将word文档解压缩,并进一步提取内容 var admZip = requir

  • 最简单的java生成word文档方法

    1.首先新建一个word文档,然后设计好格式,比如说我的标题是黑体二号,居中对其,正文是宋体四号,如下 2.另存为xml格式(文件->另存为)的文件,如下图 3.使用txt打开保存的xml文件,复制完,贴到你的代码里,如图 4.替换内容,Ctrl+F搜索标题(第一步我输入的),把标题换成你要显示的动态标题,把 正文替换成你想要的动态内容,如下 5.设置相应头生成doc文件 6.测试:在浏览器输入http:127.0.0.1:8080/createDoc,结果如下: 7.分享代码 (1)以下是生成

  • asp.net中如何批量导出access某表内容到word文档

    下面通过图文并茂的方式给大家介绍asp.net中批量导出access某表内容到word文档的方法,具体详情如下: 一.需求: 需要将表中每一条记录中的某些内容导出在一个word文档中,并将这些文档保存在指定文件夹目录下 二.界面,简单设计如下: 三.添加office相关引用 添加后可在解决方案资源管理器中看到: 四.添加form1中的引用 using System.Data.OleDb; using System.Data.SqlClient; using System.IO; using Mi

  • asp.net下用Aspose.Words for .NET动态生成word文档中的数据表格的方法

    1.概述 最近项目中有一个这样的需求:导出word 文档,要求这个文档的格式不是固定的,用户可以随便的调整,导出内容中的数据表格列是动态的,例如要求导出姓名和性别,你就要导出这两列的数据,而且这个文档不是导出来之后再调整而是导出来后已经是调整过了的.看到这里,您也许马上想到用模板导出!而且.NET中自带有这个组件:Microsoft.Office.Interop.Word,暂且可以满足需求吧.但这个组件也是有局限性的,例如客户端必须装 office组件,而且编码复杂度高.最麻烦的需求是后面那个-

随机推荐