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;
    }
}
相关推荐
Swift社区2 小时前
在 Swift 中实现字符串分割问题:以字典中的单词构造句子
开发语言·ios·swift
没头脑的ht2 小时前
Swift内存访问冲突
开发语言·ios·swift
没头脑的ht2 小时前
Swift闭包的本质
开发语言·ios·swift
wjs20242 小时前
Swift 数组
开发语言
stm 学习ing3 小时前
FPGA 第十讲 避免latch的产生
c语言·开发语言·单片机·嵌入式硬件·fpga开发·fpga
湫ccc4 小时前
《Python基础》之字符串格式化输出
开发语言·python
mqiqe5 小时前
Python MySQL通过Binlog 获取变更记录 恢复数据
开发语言·python·mysql
AttackingLin5 小时前
2024强网杯--babyheap house of apple2解法
linux·开发语言·python