完善保存文件对话框|保存文件内容
1.widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QFont> //字体类头文件
#include <QFontDialog> //字体对话框
#include <QMessageBox>
#include <QColor>
#include <QColorDialog>
#include <QFile>
#include <QFileDialog>
#include <QDebug>
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_fontbtn_clicked();
void on_colorbtn_clicked();
void on_openbtn_clicked();
void on_savebtn_clicked();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
2. 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_fontbtn_clicked()
{
//定义一个ok,用来返回是否选择字体
bool ok;
//调用静态成员函数
QFont f = QFontDialog::getFont(&ok, //判断是否选择字体
QFont("幼圆",20,10,false), //初始字体
this,
"选择字体");
//判断是否选择字体
if(ok)
{
//将选中的字体设置到界面文本上
// ui->textEdit1->setFont(f);
//将字体设置到选中当前的文本上
ui->textEdit1->setCurrentFont(f);
}
else
{
QMessageBox::information(this,"提示","您还没有选择字体");
}
}
//颜色按钮对应的槽函数
void Widget::on_colorbtn_clicked()
{
QColor c = QColorDialog::getColor(QColor(190,100,170), //初始颜色
this,
"选择颜色"); //对话框标题
//对选择的颜色进行合法性判断
if(c.isValid())
{
// ui->textEdit1->setTextColor(c); //设置字体前景色
ui->textEdit1->setTextBackgroundColor(c);
}else{
QMessageBox::information(this,"提示","您还没有选择颜色");
}
}
//打开文件按钮对应的槽函数
void Widget::on_openbtn_clicked()
{
QString filename = QFileDialog::getOpenFileName(this,
"选择文件",
"./",
"all file(*.*);;Text(*.txt);;Image(*.png,*.jpg,*.gif)");
qDebug()<<filename;
//文件操作
QFile file(filename);
//打开文件
if(!file.open(QFile::ReadOnly))
{
return;
}
//读取数据,将文件中的数据全部读出来
QByteArray msg = file.readAll();
// ui->textEdit1->setText(QString::fromLocal8Bit(msg));
//将数据展示到ui界面中
ui->textEdit1->setText(msg);
//关闭文件
file.close();
}
//保存文件按钮对应的槽函数
void Widget::on_savebtn_clicked()
{
QString filename = QFileDialog::getSaveFileName(this,
"保存文件",
"./",
"all file(*.*);;Text(*.txt);;Image(*.png,*.jpg,*.gif)");
//文件操作
QFile file(filename);
//打开文件
if(!file.open(QFile::WriteOnly))
{
return;
}
//获取textEdit中的内容
QString msg = ui->textEdit1->toPlainText();
//将textEdit中的内容写入到filename中
file.write(msg.toLocal8Bit());
//关闭文件
file.close();
}
代码运行效果如下: