1、
头文件
#ifndef MY_QT_H
#define MY_QT_H
#include <QFontDialog>
#include <QFont>
#include <QWidget>
#include <QLabel>
#include <QPushButton>
#include <QLineEdit>
#include <QTextEdit>
#include <QDebug>
#include <QColor>
#include <QColorDialog>
#include <QFile>
#include <QFileDialog>
namespace Ui {
class my_qt;
}
class my_qt : public QWidget
{
Q_OBJECT
public slots:
void on_ziti_clicked();
void on_color_clicked();
void on_open_file_clicked();
void on_save_file_clicked();
public:
explicit my_qt(QWidget *parent = nullptr);
~my_qt();
private:
Ui::my_qt *ui;
QPushButton * btn_ziti;
QPushButton * btn_color;
QPushButton * btn_openfile;
QPushButton * btn_savefile;
QTextEdit *text;
};
#endif // MY_QT_H
主函数
#include "my_qt.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
my_qt w;
w.show();
return a.exec();
}
运行函数
#include "my_qt.h"
#include "ui_my_qt.h"
my_qt::my_qt(QWidget *parent) :
QWidget(parent),
ui(new Ui::my_qt)
{
ui->setupUi(this);
//-------------------
//创建一个固定大小的窗口
this->setFixedSize(640,480);
//修改窗口的图标
this->setWindowIcon(QIcon(":/world.jpg"));
//修改窗口的标题名称
this->setWindowTitle("文本文档");
//创建一个文本框并设置大小和位置以及颜色
text = new QTextEdit(this);
text->setText("这是一个多行文本框");
text->setGeometry(0,0,640,300);
//创建四个按钮
btn_ziti=new QPushButton;//创建按钮
btn_color=new QPushButton;
btn_openfile=new QPushButton;
btn_savefile=new QPushButton;
btn_ziti->setParent(this);//设置按钮的父组件
btn_color->setParent(this);
btn_openfile->setParent(this);
btn_savefile->setParent(this);
btn_ziti->setGeometry(60,320,90,50);//设置按钮大小
btn_color->setGeometry(180,320,90,50);
btn_openfile->setGeometry(300,320,90,50);
btn_savefile->setGeometry(420,320,90,50);
btn_ziti->setText("字体");//给按钮设置名称
btn_color->setText("颜色");
btn_openfile->setText("打开文件");
btn_savefile->setText("保存文件");
//创建四个按钮与其对应的槽函数连接
connect(this->btn_ziti,SIGNAL(clicked()),this,SLOT(on_ziti_clicked()));
connect(this->btn_color,SIGNAL(clicked()),this,SLOT(on_color_clicked()));
connect(this->btn_openfile,SIGNAL(clicked()),this,SLOT(on_open_file_clicked()));
connect(this->btn_savefile,SIGNAL(clicked()),this,SLOT(on_save_file_clicked()));
}
my_qt::~my_qt()
{
delete ui;
}
void my_qt:: on_ziti_clicked(){
this->btn_ziti->setStyleSheet("background-color:green");//当按下字体按钮时,按钮颜色变为绿色
bool ok;
QFont font = QFontDialog::getFont(&ok, //判断用户是否修改了字体
QFont("宋体",10), //设置初始字体
this, //设置父组件
"字体"); //设置文本框的名称
if(ok){
this->text->setFont(font);
}
else{
qDebug()<<"用户并未改变字体";
}
}
void my_qt:: on_color_clicked(){
QColor c = QColorDialog::getColor(Qt::black,
this,
"颜色");
if(c.isValid()){
this->text->setTextBackgroundColor(c);
}
else{
qDebug()<<"用户并未改变颜色";
}
}
void my_qt::on_open_file_clicked(){
QString fileName = QFileDialog::getOpenFileName(this,
"选择文件",
"./",
"ALL(*.*);;Text(*.txt);;源文件(*.cpp);;图片(*.png *.jpg *gif)");
//判断用户是否选中文件
if(fileName.isEmpty()){
qDebug()<<"用户取消选择文件"<<endl;
return;
}
//输入文件路径
qDebug()<<fileName;
//文件操作三部曲:打开、关闭、读写
QFile file(fileName);
//判断文件是否存在
if(!file.exists()){
qDebug()<<"您要打开的文件不存在";
return ;
}
//打开文件
if(!file.open(QIODevice::ReadWrite));
//读取文件中的数据
QByteArray text=file.readAll();
//将读到的数据展示在ui界面上
this->text->setText(text);
//关闭文件
file.close();
}
void my_qt::on_save_file_clicked(){
//获取文件路径
QString fileName = QFileDialog::getSaveFileName(this,
"保存文件",
"./",
"ALL(*.*);;Text(*.txt);;源文件(*.cpp);;图片(*.png *.jpg *gif)");
//实例化文件对象
QFile file(fileName);
//打开文件
if(!file.open(QIODevice::ReadWrite)){
qDebug()<<"文件打开失败"<<endl;
return ;
}
//获取UI界面中的文本内容
QString msg = this->text->toPlainText();
//将msg写入文件中
file.write(msg.toLocal8Bit());
//关闭文件
file.close();
}