【QTday3作业】

作业:练习课上学的字体对话框,颜色对话框,打开文件对话框,保存文件对话框

#include "chat.h"
#include "ui_chat.h"

Chat::Chat(QWidget *parent) :QWidget(parent),ui(new Ui::Chat)
{
    ui->setupUi(this);


    //1.
    //更改窗口图标
    this->setWindowIcon(QIcon(":/icon_nhgbq8i4bf/QQ.png"));
    //更改窗口名称
    this->setWindowTitle("QQ");
    //设置固定尺寸
    this->setFixedSize(1000,800);

    //2.字体按钮
    fontBtn = new QPushButton("字体",this);
    //设置大小
    fontBtn->resize(100,50);
    //将组件移动走
    fontBtn->move(10,10);


    //3.颜色按钮
    colorBtn = new QPushButton("颜色",this);
    //设置大小
    colorBtn->resize(100,50);
    //将组件移动走
    colorBtn->move(fontBtn->x()+200,fontBtn->y());


    //4.打开文件按钮
    openfileBtn = new QPushButton("打开文件",this);
    //设置大小
    openfileBtn->resize(100,50);
    //将组件移动走
    openfileBtn->move(fontBtn->x()+400,fontBtn->y());

    //5.保存文件按钮
    savefileBtn = new QPushButton("保存文件",this);
    //设置大小
    savefileBtn->resize(100,50);
    //将组件移动走
    savefileBtn->move(fontBtn->x()+600,fontBtn->y());



    //6.文本编辑器
    textEdit = new QTextEdit(this);
    textEdit->setFixedSize(800,400);
    textEdit->move(10,300);


//*******************************************信号与槽*************************************************//

    //将字体按钮点击信号连接到槽函数
    connect(fontBtn,&QPushButton::clicked,this,&Chat::fontSlot);

    //将颜色按钮点击信号连接到槽函数
    connect(colorBtn,&QPushButton::clicked,this,&Chat::colorSlot);

    //将打开文件按钮点击信号连接到槽函数
    connect(openfileBtn,&QPushButton::clicked,this,&Chat::openfileSlot);

    //将保存文件按钮点击信号连接到槽函数
    connect(savefileBtn,&QPushButton::clicked,this,&Chat::savefileSlot);

}



Chat::~Chat()
{
    delete ui;
}






//处理界面跳转函数对应的槽函数
void Chat::jumpSlot()
{
    this->show();   //展示该界面
}


//字体按钮被点击产生的信号连接的槽函数
void Chat::fontSlot()
{
    bool ok;    //判断是否选中字体(确定还是取消)
    QFont font = QFontDialog::getFont(&ok,
                                      QFont("楷体",48,2,true),
                                      nullptr,
                                      "选择字体");
    if(ok)
    {
        //qDebug() << "用户选中了一个字体";

        textEdit->setFont(font);              //将字体,加载到文本编辑器的文本内容上(全部内容更改字体)

        //textEdit->setCurrentFont(font);         //只将选中的内容更改字体
    }
    else
    {
        //qDebug() << "用户取消选中了一个字体";
    }
}

//颜色按钮被点击产生的信号连接的槽函数
void Chat::colorSlot()
{
    QColor color = QColorDialog::getColor(QColor ("pink"),          //初始颜色
                                          this,                     //父组件
                                          "选择颜色");
    if(color.isValid())
    {
        //将选中的颜色设置到字体上
        //textEdit->setTextColor(color);                          //设置选中的 字体的前景色
        textEdit->setTextBackgroundColor(color);                设置选中的 字体的背景色

    }
    else
    {
        //qDebug() << "用户取消选中了颜色";
    }
}

//打开文件按钮被点击产生的信号连接的槽函数
void Chat::openfileSlot()
{
    QString fileName = QFileDialog::getOpenFileName(this,
                                                    "选择文件",
                                                    "./",
                                                    "ALL(*.*);;Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)");
    if(fileName.isEmpty())
    {
        qDebug() << "用户取消打开文件";
    }
    else
    {
        qDebug() << fileName;
    }

    //文件操作三部曲:打开、读写、关闭
    QFile file(fileName);

    //判断文件是否存在
    if(!file.exists())
    {
        qDebug() << "文件不存在";
        return;
    }

    //打开文件
    if(!file.open(QIODevice::ReadWrite))
    {
        qDebug() << "文件打开失败";
        return;
    }


    //读取文件中的数据
    QByteArray text =  file.readAll();

    textEdit->setText(QString::fromLocal8Bit(text));

    //关闭文件
    file.close();
}

//保存文件按钮被点击产生的信号连接的槽函数
void Chat::savefileSlot()
{

    //获取文件路径
    QString fileName = QFileDialog::getSaveFileName(this,
                                                    "保存文件",
                                                    "./",
                                                    "ALL(*.*)");
    //实例化文件对象
    QFile file(fileName);

    //打开文件
    if(!file.open(QIODevice::ReadWrite))
    {
        qDebug() << "文件打开失败";
        return;
    }

    //获取编辑器的文本内容
    QString msg = textEdit->toPlainText();

    //将msg写入文件中
    file.write(msg.toLocal8Bit());

    //关闭文件
    file.close();

}






运行结果:

【QTday3作业】_第1张图片

【QTday3作业】_第2张图片

 

你可能感兴趣的:(c++)