制作一个简易记事本,实现更改字体颜色、字体类型大小、打开文件、保存文件的功能。
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include<QColor> //颜色类
#include<QColorDialog> //颜色类对话框
#include<QFont> //字体类
#include<QFontDialog> //字体对话框
#include<QFile> //文件类
#include<QFileDialog> //文件对话框
#include<QDebug>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = nullptr);
~Widget();
private slots:
void on_colorBtn_clicked();
void on_fontBtn_clicked();
void on_openFileBtn_clicked();
void on_saveFileBtn_clicked();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
//颜色对话框对应的槽函数
void Widget::on_colorBtn_clicked()
{
QColor color = QColorDialog::getColor( //函数返回值类型QColor,返回选中的颜色,函数名getColor,是静态函数
QColor("cyan"), //初始颜色
this, //父组件
"choose the color"); //颜色对话框标题
//判断颜色是否合法
if(color.isValid())
{
//用户选的颜色合法
ui->textEdit->setTextColor(color); //将选中的颜色设为初始颜色
}
else {
qDebug()<<"please enter a valid color";
}
}
//字体对话框对应的槽函数
void Widget::on_fontBtn_clicked()
{
bool ok;
QFont font = QFontDialog::getFont( //返回值是一个选中的字体
&ok, //返回用户是否选择字体
QFont("楷体",10), //初始字体数据
this, //父组件
"choose the font"); //字体对话框的标题
//对用户是否选择了字体进行判断
if(ok)
{
ui->textEdit->setFont(font);
}
else {
qDebug()<<"用户取消了字体";
}
}
//打开文件对话框对应的槽函数
void Widget::on_openFileBtn_clicked()
{
QString filename = QFileDialog::getOpenFileName( //函数返回值类型是一个文件路径
this, //父组件
"get the path of filename", //对话框标题
"./", //起始目录
"ALL(*.*)"); //文件类型过滤器
//判断用户是否选中文件
if(filename.isEmpty())
{
qDebug()<<"user cancel the choice";
return;
}
//运行到这,表示选中了文件,打开文件
//文件操作三部曲:打开,读写,关闭
QFile file(filename); //通过获取的文件路径构造出一个文件对象
//判断要打开的文件是否存在
if(!file.exists())
{
qDebug()<<"the file you are trying to open does not exist";
return;
}
//打开文件
if(!file.open(QIODevice::ReadWrite))
{
qDebug()<<"open the file failed";
return;
}
//读取文件中内容
QByteArray text = file.readAll(); //将文件中的内容全部读取出来
//将读取到的文件内容展示到ui界面上
ui->textEdit->setText(QString::fromLocal8Bit(text));
//关闭文件
file.close();
}
//保存文件对话框对应的槽函数
void Widget::on_saveFileBtn_clicked()
{
//获取文件路径
QString filename = QFileDialog::getSaveFileName(
this, //父组件
"save the file", //保存文件对话框标题
"./", //起始路径
"ALL(*.*)"); //过滤器
//实例化文件对象
QFile file(filename);
//打开文件
if(!file.open(QIODevice::ReadWrite))
{
qDebug()<<"the file open failed";
return;
}
//获取ui界面中的文本内容
QString msg = ui->textEdit->toPlainText();
//将获取到的内容写入文件中
file.write(msg.toLocal8Bit());
}
效果: