QT中完成文本编辑器的文件另存功能
widget.h:
#ifndef WIDGET_H
#define WIDGET_H
#include<QFont>
#include <QWidget>
#include<QColor>
#include<QColorDialog>
#include<QFontDialog>
#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_font_clicked();
void on_calor_clicked();
void on_openbtn_clicked();
void on_savebtn_clicked();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
widget.cpp:
#include "widget.h"
#include "ui_widget.h"
#include<QMessageBox>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
//字体对话框对应的槽函数
void Widget::on_font_clicked()
{
bool ok; //判断是否选中字体
QFont f= QFontDialog::getFont(&ok,QFont("宋体",10),this,"选择字体");
//参数1:是否选中状态
//参数2:初始字体
//参数3:父组件
//参数4:对话框标题
if(ok)
{
//说明选择字体成功
// ui->textEdit->setFont(f); 全部字体改变
ui->textEdit->setCurrentFont(f); //选中部分改变
}
else
{
//未选择字体
QMessageBox::information(this,"提示","未选中字体");
}
}
//颜色对话框对应的槽函数
void Widget::on_calor_clicked()
{
QColor c=QColorDialog::getColor();
//将获取的颜色放在选中的字体上
//ui->textEdit->setTextColor(c); //设置字体颜色
ui->textEdit->setTextBackgroundColor(c);
}
void Widget::on_openbtn_clicked()
{
QString filename=QFileDialog::getOpenFileName(this,"open file","./","Txt(*.txt)");
//参数1:父组件
//参数2:窗口标题
//参数3:起始路径
//参数4:过滤器
//创建文件对象,打开给定的路径下的文件
QFile file(filename);
if(file.open(QFile::ReadWrite))
{
//打开文件,可以进行读写数据
//将文件中的内容读写出来
QByteArray msg=file.readAll();
//将读取出来的内容放到ui界面上
ui->textEdit->setText(QString::fromLocal8Bit(msg));
}
else
{
QMessageBox::information(this,"","文件打开失败");
}
}
//文件另存为槽函数
void Widget::on_savebtn_clicked()
{
QString filename=QFileDialog::getSaveFileName(this,"save file","./","Txt(*.txt)");
//打开txt文本用来存放数据
QFile file(filename);
if(file.open(QFile::ReadWrite))
{
QString msg=ui->textEdit->toPlainText();
//用字节数组存放
file.write(msg.toLocal8Bit());
}
else
{
QMessageBox::information(this,"","文件另存为失败");
}
}
运行效果: