完成文本编辑器的文件另存功能
头文件
#ifndef TEXT_H
#define TEXT_H
#include <QWidget>
#include <QFont> //字体类
#include <QFontDialog> //字体对话框类
#include <QMessageBox>
#include <QColor> //颜色类
#include <QColorDialog> //颜色对话框类
#include <QFile> //文件类
#include <QFileDialog> //文件对话框类
QT_BEGIN_NAMESPACE
namespace Ui { class text; }
QT_END_NAMESPACE
class text : public QWidget
{
Q_OBJECT
public:
text(QWidget *parent = nullptr);
~text();
private slots:
void on_fontBtn_clicked();
void on_colorBtn_clicked();
void on_openbtn_clicked();
void on_savebtn_clicked();
private:
Ui::text *ui;
};
#endif // TEXT_H
源代码
#include "text.h"
#include "ui_text.h"
text::text(QWidget *parent)
: QWidget(parent)
, ui(new Ui::text)
{
ui->setupUi(this);
}
text::~text()
{
delete ui;
}
void text::on_fontBtn_clicked()
{
bool ok;
QFont f = QFontDialog::getFont(&ok,QFont("宋体",10),this,"选择字体");
if(ok){
//说明选择字体成功
//ui->textEdit->setFont(f); //将所有字体进行改变
ui->textEdit->setCurrentFont(f); //将选中的字体进行设置
}else{
//未选择字体
QMessageBox::information(this,"提示","未选择字体");
}
}
void text::on_colorBtn_clicked()
{
QColor c = QColorDialog::getColor(); //获取颜色
//将获取的颜色放到选中的字体上
ui->textEdit->setTextColor(c); //设置字体颜色
ui->textEdit->setTextBackgroundColor(c); //设置字体背景颜色
}
//打开文件按钮对应的槽函数
void text::on_openbtn_clicked()
{
QString fileName = QFileDialog::getOpenFileName( //获取文件路径
this, //父组件
"open file", //窗口标题
"./", //起始路径
"Txt(*.txt)"); //过滤器
//创建文件对象,打开给定的路径下的文件
QFile file(fileName);
if(file.open(QFile::ReadWrite)){
//打开文件,可以进行读写数据
//将文件中的内容读取出来
QByteArray msg = file.readAll();
//将读取出来的内容放到ui界面上
ui->textEdit->setText(QString::fromLocal8Bit(msg));
}else{
QMessageBox::information(this,"","文件打开失败");
}
}
//另存为文件按钮对应的槽函数
void text::on_savebtn_clicked()
{
QString fileName = QFileDialog::getSaveFileName(
this,
"save file",
"./"
"Txt(*.txt)");
//创建文件对象,另存为文件
QFile file(fileName);
if(file.open(QFile::ReadWrite)){
QString msg = ui->textEdit->toPlainText();
file.write(msg.toLocal8Bit());
}else{
QMessageBox::critical(this,"","另存为失败");
}
}
主调函数
#include "text.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
text w;
w.show();
return a.exec();
}
运行结果