当前位置:网站首页>Qt 一个简单的word文档编辑器
Qt 一个简单的word文档编辑器
2022-07-05 23:34:00 【Mr.codeee】
1.先看效果图
可以设置文字的属性、文字颜色、字体类型。以下示例仅供参考,有的地方还是不完善。
2.需要用到的类
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();
}
边栏推荐
- 2022.6.20-6.26 AI行业周刊(第103期):新的小生命
- 如何让同步/刷新的图标(el-icon-refresh)旋转起来
- What is a humble but profitable sideline?
- CAS and synchronized knowledge
- In C#, why can't I modify the member of a value type instance in a foreach loop?
- STM32__ 06 - single channel ADC
- Online yaml to CSV tool
- CIS基准测试工具kube-bench使用
- el-cascader的使用以及报错解决
- Creative mode 1 - single case mode
猜你喜欢
Initialize your vector & initializer with a list_ List introduction
Breadth first search open turntable lock
Brushless drive design -- on MOS drive circuit
JVM details
零犀科技携手集智俱乐部:“因果派”论坛成功举办,“因果革命”带来下一代可信AI
698. Divided into k equal subsets ●●
Research notes I software engineering and calculation volume II (Chapter 1-7)
4点告诉你实时聊天与聊天机器人组合的优势
Rasa 3.x 学习系列-Rasa 3.2.1 新版本发布
[classical control theory] summary of automatic control experiment
随机推荐
When to use useImperativeHandle, useLayoutEffect, and useDebugValue
Russian Foreign Ministry: Japan and South Korea's participation in the NATO summit affects security and stability in Asia
How to get all the values stored in localstorage
零犀科技携手集智俱乐部:“因果派”论坛成功举办,“因果革命”带来下一代可信AI
如何提升口才
Bao Yan notes II software engineering and calculation volume II (Chapter 13-16)
4点告诉你实时聊天与聊天机器人组合的优势
GFS distributed file system
Which side projects can be achieved? Is it difficult for we media to earn more than 10000 a month?
Fiddler Everywhere 3.2.1 Crack
STM32__ 06 - single channel ADC
Open source CRM customer relationship system management system source code, free sharing
Spire Office 7.5.4 for NET
成为程序员的你,后悔了吗?
21.PWM应用编程
My colleagues quietly told me that flying Book notification can still play like this
Code farmers to improve productivity
[original] what is the core of programmer team management?
14 MySQL view
Initialize your vector & initializer with a list_ List introduction