作业1
题目
完成文本编辑器写入
效果
代码
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QFontDialog>
#include <QMessageBox>
#include <QColorDialog>
#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:
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);
// 字体按钮
connect(ui->fontBtn,&QPushButton::clicked,this,[&](){
bool ok; // 返回是否选中字体
QFont font = QFontDialog::getFont(
&ok, // 是否选中字体
QFont("幼圆",20,10,false), // 初始字体
this, // 父组件
"选择字体"); // 对话框标题
if (ok) {
ui->textEdit->setCurrentFont(font);
} else {
QMessageBox::information(this,"提示","没有选择字体");
}
});
// 颜色对话框
connect(ui->colorBtn,&QPushButton::clicked,this,[&](){
QColor color = QColorDialog::getColor(
QColor(58,61,62),
this,
"选择颜色");
if (color.isValid()) {
ui->textEdit->setTextColor(color); // 设置前景色
// ui->textEdit->setTextBackgroundColor(color);// 设置背景色
} else {
QMessageBox::information(this,"提示","没有选择颜色");
}
});
// 文件打开对话框
connect(ui->openBtn,&QPushButton::clicked,this,[&](){
QString fileName = QFileDialog::getOpenFileName(
this, // 父组件
tr("打开文件"), // 其实路径
"D:/user/documents", // 起始路径
tr( // 过滤器
"Text (*.txt *.md *.doc);;"
"All (*)"
)
);
QFile file(fileName);
// 打开文件
if(!file.open(QIODevice::ReadOnly)){
return;
}
// 读取数据 (8位字符数组)
QByteArray buf = file.readAll();
// 数据展示到ui界面
ui->textEdit->setText(QString(buf)); // 将qbtearray转换成qstring
// 关闭文件
file.close();
});
// 文件另存为对话框
connect(ui->saveBtn,&QPushButton::clicked,this,[&](){
QString fileName = QFileDialog::getSaveFileName(
this, // 父组件
tr("保存文件"), // 其实路径
"D:/user/documents", // 起始路径
tr( // 过滤器
"Text (*.txt *.md *.doc);;"
"All (*)"
)
);
if(!fileName.isEmpty()){
QFile file(fileName);
// 开
if(file.open(QIODevice::WriteOnly)){
return;
}
// 写
QByteArray buf = ui->textEdit->toPlainText().toUtf8();
file.write(buf);
// 关
file.close();
}
});
}
Widget::~Widget()
{
delete ui;
}