widget.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
this->setWindowTitle("文本编辑器");
ui->radioButton->setChecked(true);
ui->radioButton_3->setChecked(true);
ui->radioButton_5->setChecked(true);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_font_clicked()
{
bool ok;
QFont f=QFontDialog::getFont(&ok,QFont("楷体",12,5,true),this,"选择字体");
//参数1:返回选中的字体状态
//参数2:初始字体
//参数3:父组件
//参数4:对话框标题
//将选中的字体舍之道文本编辑器中
if(ok)
{
if(ui->radioButton->isChecked()==true)
{
ui->textEdit->setFont(f);//设置全局字体
}else
{
ui->textEdit->setCurrentFont(f);//设置选中字体
}
}
}
void Widget::on_pushButton_color_clicked()
{
//调取颜色对话框,选中颜色
QColor c=QColorDialog::getColor(QColor(255,0,0),this,"选择颜色");
if(c.isValid())//如果确定修改
{
//将改字体添加到文本框
if(ui->radioButton_3->isChecked()==true)
{
ui->textEdit->setTextColor(c);//设置文本前景色
}else
{
ui->textEdit->setTextBackgroundColor(c);//设置背景色
}
}
}
void Widget::on_pushButton_openfile_clicked()
{
//1. 找到要打开的文件路径
QString filename=QFileDialog::getOpenFileName(
this,//父窗口
"选择",//窗口标题
"./",//当前文件夹
"txt(*.txt);;c程序(*.C);;all(*.*)");//过滤器
//2.用Qfile类实例化对象,可以对路径名进行构造
QFile file(filename);
//3.打开文件
if(!file.open(QFile::ReadWrite))//以读写模式打开文件
return;
//4.读取文件内容,将文件内容放到ui界面中
QByteArray msg= file.readAll();//将文件中的内容全部读取出来,放到字节数组种
//如果选择utf-8 ,则直接读取放在文本框
if(ui->radioButton_5->isChecked()==true)
{
//5.将读取出来的内容放到ui界面
ui->textEdit->setText(msg);
}else//否则放gbk的格式
{
QTextCodec *codec = QTextCodec::codecForName("GBK"); // 获取GBK编码的QTextCodec对象
QString gbkStr = codec->toUnicode(msg); // 使用QTextCodec将UTF-8编码的字节串转换为QString
ui->textEdit->setText(gbkStr); // 显示转换后的字符串
}
file.close();//关闭文件
}
void Widget::on_pushButton_savefile_clicked()//保存文件没写出来
{
// 保存文件 getsave
//获取文本框纯文本内容
QString str=ui->textEdit->toPlainText();
//string 转 QBytearray
//打开要保存的 文件路径
QString filename=QFileDialog::getSaveFileName(this, //父组件
"保存", //窗口标题
"./", //起始路径
"all(*.*)");//过滤器
QFile file(filename);//实例化对象
//打开文件
if(!file.open(QFile::ReadWrite))
{
return ;
}
//获取ui界面上的文本内容
QString msg=ui->textEdit->toPlainText();
//将内容写入到所选的文件中
file.write(msg.toLocal8Bit());//将qstring类型转换为qbyte
//关闭文件
file.close();
}