QT文件对话框,将标签内容保存至指定文件

一、主要步骤

首先,通过getSaveFileName过去想要保存的文件路径及文件名,其次,通过QFile类实例化一个文件对象,再读取文本框中的内容,最后将读取到的内容写入到文件中,最后关闭文件。

1.txt即为完成上述操作所得文件,文件中的内容为左侧文本框中的内容。

主要功能函数:

cpp 复制代码
void Widget::on_save_clicked()
{
    QString fileName =  QFileDialog::getSaveFileName(this,"打开文件","E:/QT/QT/day2_home","All(*.*);;Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)");
    if(fileName.isNull())
    {
        QMessageBox::information(this,"提示","未保存选中文件");
    }

    //实例化一个文件对象
    QFile file(fileName);   //使用获取到的文件路劲,实例化一个文件对象,后期对文件的操作都是基于该对象

    //打开文件
    if(!file.open(QFile::ReadWrite))
    {
        return;
    }

    //读取textEdit中的内容
    QString msg =  ui->textEdit->toPlainText();

    /将QString转换为QByteArray
    char*  ch;
    QByteArray ba = msg.toLatin1(); // must
    ch=ba.data();

    //将textEdit中的内容写入到文件中
    file.write(ch);
    //关闭文件

    file.close();
}

二、 对话框的其他功能及代码展示

2.1 字体对话框

通过文件对话框可以设置选中或文本框中全部文字的字体样式,如字体,文字大小,文字粗细等。

主要功能函数:

cpp 复制代码
void Widget::on_font_clicked()
{
    bool ok;
    QFont font =  QFontDialog::getFont(&ok,QFont("楷体",10,10,false),this,"选择字体");
    if (ok)
    {
       // ui->textEdit->setFont(font);  //设置全部字体变化
        ui->textEdit->setCurrentFont(font); //设置选中字体变化
    } else
    {
        QMessageBox::information(this,"提示","选中字体未保存");
    }
}

2.2 颜色对话框

通过颜色对话框可跟换字体颜色或背景颜色

主要功能函数:

cpp 复制代码
void Widget::on_color_clicked()
{
    //[static] QColor
    //QColorDialog::getColor(
    //const QColor &initial = Qt::white,
    //QWidget *parent = nullptr,
    //const QString &title = QString(),
    //QColorDialog::ColorDialogOptions options = ColorDialogOptions())

    QColor color =  QColorDialog::getColor(QColor("white"),this,"选中颜色");
    if(color.isValid())
    {
        ui->textEdit->setTextColor(color);
        ui->textEdit->setTextBackgroundColor(color);
    } else{
        QMessageBox::information(this,"提示","颜色未保存");
    }
}

2.3 文件对话框

通过getOpenFileName可以获得选中的文件目录,通过相对于的文件操作可以将文件中的内容显示的文本框中。.

主要功能函数:

cpp 复制代码
void Widget::on_open_clicked()
{
    QString fileName =  QFileDialog::getOpenFileName(this,"打开文件","E:/QT/QT/day2_home","All(*.*);;Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)");
    if(fileName.isNull())
    {
        QMessageBox::information(this,"提示","未保存选中文件");
    }

    //实例化一个文件对象
    QFile file(fileName);   //使用获取到的文件路劲,实例化一个文件对象,后期对文件的操作都是基于该对象

    //判断文件是否存在
    if(!file.exists())
    {
        return;
    }
    //打开文件
    if(!file.open(QFile::ReadWrite))
    {
        return;
    }
    //读取文件中的内容
    QByteArray msg = file.readAll();
    //将内容展示到 UI界面
    ui->textEdit->setText(msg);
    //关闭文件
    file.close();
}

三、事件处理机制--键盘事件

通过键盘'W''S''A''D'键,实现小球图标的上下左右移动

键盘响应事件

主要功能函数:

cpp 复制代码
void Widget::keyPressEvent(QKeyEvent *event)
{
    switch (event->key())
    {
    case 'W':
    {
        if(ui->label->y() <= 0-ui->label->height())
        {
            ui->label->move(ui->label->x(),this->height());
        }
        ui->label->move(ui->label->x(),ui->label->y()-10);
    }break;
    case 'S':
    {
        if(ui->label->y() >= this->height())
        {
            ui->label->move(ui->label->x(),0);
        }
        ui->label->move(ui->label->x(),ui->label->y()+10);
    }break;
    case 'A':
    {
        if(ui->label->x() <= 0-ui->label->width())
        {
            ui->label->move(this->width(),ui->label->y());
        }
        ui->label->move(ui->label->x()-10,ui->label->y());
    }break;
    case 'D':
    {
        if(ui->label->x() >= this->width())
        {
            ui->label->move(0,ui->label->y());
        }
        ui->label->move(ui->label->x()+10,ui->label->y());
    }break;
    }
}
相关推荐
一念&19 分钟前
每日一个C语言知识:C 数组
c语言·开发语言·算法
小年糕是糕手22 分钟前
【数据结构】单链表“0”基础知识讲解 + 实战演练
c语言·开发语言·数据结构·c++·学习·算法·链表
疯狂吧小飞牛33 分钟前
Lua C API 中的 lua_rawseti 与 lua_rawgeti 介绍
c语言·开发语言·lua
Tony Bai36 分钟前
【Go 网络编程全解】06 UDP 数据报编程:速度、不可靠与应用层弥补
开发语言·网络·后端·golang·udp
半夏知半秋36 分钟前
lua对象池管理工具剖析
服务器·开发语言·后端·学习·lua
大飞记Python1 小时前
Windows10停服!7-Zip被爆组合漏洞|附安全指南
开发语言
浪裡遊1 小时前
MUI组件库与主题系统全面指南
开发语言·前端·javascript·vue.js·react.js·前端框架·node.js
一匹电信狗1 小时前
【C++】C++风格的类型转换
服务器·开发语言·c++·leetcode·小程序·stl·visual studio
寻找华年的锦瑟1 小时前
Qt-键鼠事件
开发语言·qt
whm27771 小时前
Visual Basic 值传递与地址传递
java·开发语言·数据结构