20230901-文件保存

文件保存

 .cpp文件

#include "widget.h"
#include "ui_widget.h"
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
//include 

Widget::Widget(QWidget *parent):QWidget(parent),ui(new Ui::Widget)
{

    ui->setupUi(this);
    //========================================================//
    connect(ui->NoB,&QPushButton::clicked,this,&Widget::out_Q1);//提示框
    connect(ui->SB1,&QPushButton::clicked,this,&Widget::out_Q2);//字体
    connect(ui->SB2,&QPushButton::clicked,this,&Widget::out_Q3);//颜色
    connect(ui->SB3,&QPushButton::clicked,this,&Widget::out_Q4);//文件打开
    connect(ui->SB4,&QPushButton::clicked,this,&Widget::out_Q5);//文件保存
    //========================================================//
    this->setWindowTitle("阿巴阿巴");
    this->resize(430,327);
    //this->setWindowIcon(QIcon("C:/Users/BlackMC/Desktop/icon/wodepeizhenshi.png"));
    //this->setStyleSheet("background-color:orange");
    //========================================================//
}

Widget::~Widget()
{
    delete ui;
}
//标题弹框槽函数
void Widget::out_Q1()
{
    //======QMessageBox实例化对象
    //int ret = QMessageBox::warning(this,"信息","中午一起SLeep!",QMessageBox::Yes | QMessageBox::No,QMessageBox::Yes);
    QMessageBox box(QMessageBox::Information,"信息","中午一起SLeep!",QMessageBox::Yes|QMessageBox::No,this);

    //======
    int ret = box.exec();

    //======
    if(ret == QMessageBox::Yes)
    {
        //test->say("爸爸");
        QMessageBox::warning(this, QStringLiteral("阿巴阿巴"), QStringLiteral("好的我最喜欢了"), QMessageBox::Cancel | QMessageBox::Ok);
        //QMessageBox::information(this, QStringLiteral("阿巴阿巴"), QStringLiteral("好的我最喜欢了"));
    }
    else
    {
        //test->say("爷爷");
        QMessageBox::warning(this, QStringLiteral("阿巴阿巴"), QStringLiteral("好可惜啊,下次再约"), QMessageBox::Cancel | QMessageBox::Ok);
    }
}
//字体类型修改
void Widget::out_Q2()
{
    //调用QF
    bool ok;
    QFont f = QFontDialog::getFont(&ok,QFont("等线",16,10,false),this,"选择字体");
    //选中字体
    if(ok)
    {
        //ui->Text1->setFont(f);
        ui->Text1->setCurrentFont(f);
    }
    else
    {
        QMessageBox::information(this,"提示","你取消了选择字体");
    }
}
//字体颜色修改
void Widget::out_Q3()
{
    QColor c = QColorDialog::getColor(QColor("pink"),this,"选择颜色");
    //
    if(c.isValid())
    {
        //合法
        ui->Text1->setTextColor(c);//字体本身
        //ui->Text1->setTextBackgroundColor(c);//字体背景
    }
    else
    {
        //不合法
        QMessageBox::information(this,"提示","你取消了选择color");
    }

}
//文件打开
void Widget::out_Q4()
{
    //调用QFileDialog的静态成员函数getOpenFileName获取文件
    QString s1 = QFileDialog::getOpenFileName(this,
                                              "选择文件",
                                              "./",
     "image File(*.png *.jpg *.bmp);;Text File(*.txt);;All(*.*)");
    //
    if(s1.isNull())
    {
        QMessageBox::information(this,"提示","你取消了选择文件");
    }
    //输出路径
    qDebug() << s1;
    //实例化一个文件对象
    QFile file(s1); //获取到的文件路径,后期文件操作的都是基于这个对象
    //判断文件是否存在
    if(!file.exists())
    {
       return;
    }
    //打开文件
    if(!file.open(QFile::ReadWrite))
    {
        return;
    }
    // 读取文件的内容
    QByteArray msg = file.readAll();
    //内容展示
    //ui->Text1->setText(QString::fromLocal8Bit(msg));
    ui->Text1->setText(msg);
    //关闭文件
    file.close();
}
//文件保存
void Widget::out_Q5()
{
    //获取要保存的文件名
    QString saveFileName = QFileDialog::getSaveFileName(this,
                                                        "保存文件",
                                                        "./",
                                                        "Text File(*.txt);;All(*.*)");
    //如果文件名为空,则提示用户
    if (saveFileName.isNull())
    {
        QMessageBox::information(this, "滴滴", "取消保存");
        return;
    }
    //实例化一个文件对象
    QFile file(saveFileName);
    //打开文件,使用QIODevice::WriteOnly模式表示只写入文件
    if (!file.open(QIODevice::WriteOnly))
    {
        QMessageBox::warning(this, "Error", "无法保存");
        return;
    }
    //获取文本编辑器中的内容
    QString content = ui->Text1->toPlainText();
    //将内容转换为字节数组
    QByteArray byteArray = content.toUtf8();
    //写入文件
    qint64 bytesWritten = file.write(byteArray);
    //判断是否成功写入文件
    if (bytesWritten == -1)
    {
        QMessageBox::warning(this, "Error", "写入失败");
    }
    else
    {
        QMessageBox::information(this, "Success", "保存成功");
    }
    //关闭文件
    file.close();
}

.h

#ifndef WIDGET_H
#define WIDGET_H

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

//signals:
    //void sign_I1();
public slots:
    void out_Q1();//提示框
    void out_Q2();//字体类型
    void out_Q3();//字体颜色
    void out_Q4();//文件打开
    void out_Q5();//文件保存


public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private:
    Ui::Widget *ui;
private:
    QTextToSpeech *test;
};
#endif // WIDGET_H

球移动

.cpp 

#include "app.h"
#include "ui_app.h"
#include 
#include 
#include 

int k1 = 500;
int k2 = 500;
APP::APP(QWidget *parent):QWidget(parent),ui(new Ui::APP)
{
    ui->setupUi(this);
    this->resize(k1,k2);

}

APP::~APP()
{
    delete ui;
}
//键盘按下事件处理函数
void APP::keyPressEvent(QKeyEvent *event)
{
    qDebug() << "键盘按下了" << event->text() << "height: " << ui->label->height() << "Key值:" << event->key()<< ui->label->pos() ;
    switch(event->key())
    {
    case 'W':
    {
        if(ui->label->y() <= 0-ui->label->height())//ui->label->height = 140
        {
            ui->label->move(ui->label->x(),this->height());
        }
        ui->label->move(ui->label->x(),ui->label->y()-1);
    }break;
    case 'S':
    {
        if(ui->label->y() >= k1)//500
        {
            ui->label->move(ui->label->x(),0-ui->label->height());//-140
        }
        ui->label->move(ui->label->x(),ui->label->y()+1);
    }break;
    case 'A':
    {
        if(ui->label->x() <= 0)
        {
            ui->label->move(k1,ui->label->y());
        }
        ui->label->move(ui->label->x()-1,ui->label->y());
    }break;
    case 'D':
    {
        if(ui->label->x() >= k2)//500
        {
            ui->label->move(0-ui->label->height(),ui->label->y());//-140
        }
        ui->label->move(ui->label->x()+1,ui->label->y());
    }break;

    }
}

//键盘抬起事件处理函数
void APP::keyReleaseEvent(QKeyEvent *event)
{

}
.h
#ifndef APP_H
#define APP_H

#include 
#include 
#include 
#include //键盘事件头文件

QT_BEGIN_NAMESPACE
namespace Ui { class APP; }
QT_END_NAMESPACE

class APP : public QWidget
{
    Q_OBJECT

public:
    APP(QWidget *parent = nullptr);
    ~APP();

    void keyPressEvent(QKeyEvent *event) override;
    void keyReleaseEvent(QKeyEvent *event) override;

private:
    Ui::APP *ui;
    //QLineEdit *edit1;
};
#endif // APP_H

你可能感兴趣的:(命令模式,c++,qt)