编写文本编辑器
源文件
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
this->setWindowIcon(QIcon(":/icon/icon.png"));
this->setWindowTitle("文本编辑器");
}
Widget::~Widget()
{
delete ui;
}
//字体按钮对应的槽函数
void Widget::on_pushButton_clicked()
{
//返回是否选中字体
bool ok;
//调出系统字体的对话框
QFont f= QFontDialog::getFont(&ok,QFont("隶书",10,5,true),this,"字体");
//将选中的字体设置到文本编辑中
if(ok)
{
//设置文本框中选中的字体,用getfont函数的返回字体设置
ui->textEdit->setCurrentFont(f);
}
}
//颜色按钮对应的槽函数
void Widget::on_pushButton_2_clicked()
{
QColor c= QColorDialog::getColor(QColor(35,203,190),//指定rpg设置默认颜色
this,"颜色");
//调用QColor类中的isValid函数判断颜色是否合法
if(c.isValid())
{
ui->textEdit->setTextColor(c); //将getcolor函数获取的颜色设置给选中的文本
}
}
//打开文件对应的槽函数
void Widget::on_pushButton_3_clicked()
{
//1.找到要打开指定文件的路径
QString filename = QFileDialog::getOpenFileName(
this,
"选择",
"./",
"TxT(*.txt);;C程序(*.c);;C++程序(*.cpp)");
//2.可以用getopenfilename函数获得到的文件名中实例化一个对象
QFile f(filename);
if(!f.open(QFile::ReadWrite))
{
return;
}
//定义字符数组接受readAll函数返回值,给多文本编辑器类中的设置文本内容使用
QByteArray msg=f.readAll();
//设置文本框的内容为f文件中读取到的数据
ui->textEdit->setText(msg);
//关闭文件
f.close();
}
//保存文件对应的槽函数
void Widget::on_pushButton_4_clicked()
{
//使用getSaveFilename函数调用一个文本保存对话框,返回要保存的路径上的文件名
QString filename = QFileDialog::getSaveFileName(this,tr("Save File"), //文本框名
tr("name"), //默认保存的文件名
tr("文本文档(*.txt);;All(*.*)"));//过滤器类型
//使用路径以及对应的文件名实例化其对象
QFile f(filename);
//给定权限
if(!f.open(QFile::ReadWrite)) //指定权限
{
//如果没打开就return
return;
}
//调用toPlainText函数获取多行文本控件类上的数据
QString file =ui->textEdit->toPlainText();
QByteArray arr= file.toLocal8Bit(); //将文本内容QString类型转换为write函数需要的QByteArray类型
//将arr字符数组中的内容写入指定的文件名中
f.write(arr);
f.close();
}
头文件
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QFont> //字体类
#include <QFontDialog> //字体对话框类
#include <QColor> //颜色类
#include <QColorDialog> //颜色对话框类
#include <QString>
#include <QFile> //文本类
#include <QFileDialog> //文本对话框类
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private slots:
void on_pushButton_clicked(); //字体按钮对应的槽函数
void on_pushButton_2_clicked(); //颜色按钮对应的槽函数
void on_pushButton_3_clicked(); //打开文件按钮的槽函数
void on_pushButton_4_clicked();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H