QT(字体对话框、颜色对话框、打开文件、保存文件)

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();

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值