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;
    }
}
相关推荐
朝新_2 小时前
【多线程初阶】阻塞队列 & 生产者消费者模型
java·开发语言·javaee
立莹Sir2 小时前
Calendar类日期设置进位问题
java·开发语言
风逸hhh3 小时前
python打卡day46@浙大疏锦行
开发语言·python
火兮明兮4 小时前
Python训练第四十三天
开发语言·python
ascarl20104 小时前
准确--k8s cgroup问题排查
java·开发语言
fpcc5 小时前
跟我学c++中级篇——理解类型推导和C++不同版本的支持
开发语言·c++
莱茵菜苗5 小时前
Python打卡训练营day46——2025.06.06
开发语言·python
爱学习的小道长5 小时前
Python 构建法律DeepSeek RAG
开发语言·python
luojiaao6 小时前
【Python工具开发】k3q_arxml 简单但是非常好用的arxml编辑器,可以称为arxml杀手包
开发语言·python·编辑器
终焉代码6 小时前
STL解析——list的使用
开发语言·c++