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

news2025/1/13 8:10:18

一、主要步骤

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

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

主要功能函数:

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 字体对话框

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

主要功能函数:

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 颜色对话框

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

主要功能函数:

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可以获得选中的文件目录,通过相对于的文件操作可以将文件中的内容显示的文本框中。.

主要功能函数:

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'键,实现小球图标的上下左右移动

键盘响应事件

主要功能函数:

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;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/961254.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习JAVA打卡第四十九天

Random类 尽管可以使用math类调用static方法random&#xff08;&#xff09;返回一个0~1之间的随机数。&#xff08;包括0.0但不包括0.1&#xff09;&#xff0c;即随机数的取值范围是[0.0&#xff0c;1.0]的左闭右开区间。 例如&#xff0c;下列代码得到1&#xff5e;100之间…

【数据分享】2006-2021年我国城市级别的燃气相关指标(免费获取\20多项指标)

《中国城市建设统计年鉴》中细致地统计了我国城市市政公用设施建设与发展情况&#xff0c;在之前的文章中&#xff0c;我们分享过基于2006-2021年《中国城市建设统计年鉴》整理的2006—2021年我国城市级别的市政设施水平相关指标、2006-2021年我国城市级别的各类建设用地面积数…

如何查一个期刊是不是EI检索

目录 如何查一个期刊是不是EI检索 一、什么是EI&#xff1f; 二、EI检索方法&#xff1a; 三、EI检索视频&#xff1a;(点击放大播放) 四、EI检索图文版 常见问题 如何查一个期刊是不是EI检索 1. 访问EI Compendex官方网站&#xff1a;访问EI Compendex的官方网站…

用ChatGPT做一个Chrome扩展 | 京东云技术团队

用ChatGPT做了个Chrome Extension 最近科技圈儿最火的话题莫过于ChatGPT了。 最近又发布了GPT-4&#xff0c;发布会上的Demo着实吸睛。 笔记本上手画个网页原型&#xff0c;直接生成网页。网友直呼&#xff1a;前端失业了&#xff01; 但我觉着啊&#xff0c;真就外行看热闹…

go语言--锁

锁的基础&#xff0c;go的锁是构建在原子操作和信号锁之上的 原子锁 原子包实现协程的对同一个数据的操作&#xff0c;可以实现原子操作&#xff0c;只能用于简单变量的简单操作&#xff0c;可以把多个操作变成一个操作 sema锁 也叫信号量锁/信号锁 核心是一个uint32值&#…

DCMM数据能力成熟度评估模型--学习笔记(1)

DCMM数据能力成熟度评估模型--学习笔记 1、DCMM简介、结构组成和成熟度评估等级划分1.1 DCMM简介1.2 DCMM结构组成1.3 DCMM关键过程域1.3.1、数据战略&#xff08;指导方针&#xff09;1.3.2、数据治理 &#xff08;机制保障&#xff09;1.3.3、数据架构 (施工图纸)1.3.4、数据…

GPT-4.0技术大比拼:New Bing与ChatGPT,哪个更适合你

随着GPT-4.0技术的普及和发展&#xff0c;越来越多的平台开始将其应用于各种场景。New Bing已经成功接入GPT-4.0&#xff0c;并将其融入搜索和问答等功能。同样&#xff0c;在ChatGPT官网上&#xff0c;用户只需开通Plus账号&#xff0c;即可体验到GPT-4.0带来的智能交流和信息…

SpringBatch结合SpringBoot简单使用实现工资发放批处理操作

最近有接触到批处理相关的需求&#xff0c;学习了下SpringBatch的使用方法。SpringBatch能把复杂的批处理任务进行step分解&#xff0c;并能通过reader和writer满足不同来源数据的处理需求&#xff0c;支持在step定义时设置异常重试策略等&#xff0c;比较方便拓展。简单记录下…

【Java基础】深入理解反射、反射的应用(工厂模式、代理模式)

文章目录 1. Java反射机制是什么&#xff1f;1.2 Java反射例子 2. Java反射机制中获取Class的三种方式及区别&#xff1f;3. Java反射机制的应用场景有哪些&#xff1f;3.1. 优化静态工厂模式&#xff08;解耦&#xff09;3.1.1 优化前&#xff08;工厂类和产品类耦合&#xff…

【仿写spring之ioc篇】一、预期目标以及项目结构介绍

前言 最近系统的学习了一下spring的源码&#xff0c;准备简单仿写一下spring&#xff0c;目前是仿写ioc篇&#xff0c;在ioc篇中将完成整套的bean的生命周期&#xff0c;当然是简单的实现&#xff0c;不会像spring真正源码那样做非常系统性的校验以及接口设计。 预期目标 将…

关于“VS2022无法打开头文件<graphics.h>” 以及编译时 “没有与参数列表匹配的重载函数实例”俩个问题的解决思路

前言&#xff1a; 今天无聊没什么事干&#xff0c;突然看见一条视频梦回20年前杀马特横行的年代&#xff0c;炫酷而又土嗨的灯光闪烁&#xff0c;我又想了想之前写扫雷小游戏的时候&#xff0c;有的人写的游戏界面非常的炫酷&#xff0c;各种颜色都有&#xff0c;抱着没事没事干…

c#事件(event)

概述&#xff1a; C#中的事件是一种特殊的委托&#xff0c;它用于实现观察者模式&#xff0c;允许对象在特定事件发生时通知其他对象。 以下是使用C#事件的示例&#xff1a; 首先&#xff0c;定义一个包含事件的类&#xff1a; public class EventPublisher {// 声明一个事…

向新NEW · 数智赋能新未来 | 2023TechWorld 绿盟科技智慧安全大会圆满召开

9月1日&#xff0c;以“向新NEW数智赋能新未来”为主题的2023TechWorld绿盟科技智慧安全大会在北京如约启幕。站在新十年开篇之际&#xff0c;TechWorld技术嘉年华正式更名TechWorld智慧安全大会&#xff0c;名字全新升级背后反映着广大用户对绿盟科技始终坚持的技术战略——“…

WEBGL(3):鼠标动态绘制点

1 实现思路 绘制单个点鼠标事件监听点击事件将点推送到数组中绘制数组中所有点 2 实现代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge&…

MySQL 数据库常用命令大全(完整版)

文章目录 1. MySQL命令2. MySQL基础命令3. MySQL命令简介4. MySQL常用命令4.1 MySQL准备篇4.1.1 启动和停止MySQL服务4.1.2 修改MySQL账户密码4.1.3 MySQL的登陆和退出4.1.4 查看MySQL版本 4.2 DDL篇&#xff08;数据定义&#xff09;4.2.1 查询数据库4.2.2 创建数据库4.2.3 使…

手机怎么压缩图片?压缩方法看这些

手机怎么压缩图片&#xff1f;在现代社会中&#xff0c;手机已经成为我们日常生活中不可或缺的一部分。我们使用手机拍照、上传照片和分享照片&#xff0c;但是在分享照片之前&#xff0c;我们经常需要将其压缩&#xff0c;以便在互联网上更轻松地共享。下面这篇文章就给大家介…

下行抢占指示 DCI format 2_1

这部分R17和R15基本内容一样&#xff0c;只是有写细节描述略有区别&#xff0c;这里就以R17版本的协议看下downlinkPreemption&#xff0c;即DCI format 2_1有关内容。 R15支持eMBB和URLLC服务。 由于URLLC业务是优先级较高的业务&#xff0c;当无线资源不足时&#xff0c;已经…

如何把pdf文件合并?分享最新pdf合并方法

在所有文档格式中&#xff0c;pdf应该是最常用的&#xff0c;像产品介绍、商务合同、法律文书等等&#xff0c;这些都是pdf格式的。有时候出于工作需要&#xff0c;我们要把两份或者多份pdf文件合并在一起&#xff0c;那么问题来了&#xff0c;如何把pdf文件合并呢?小编最近发…

【勘误】基于多目标粒子群算法的微电网优化调度【风光、储能、柴油、燃气、电网交互】

目录 1 主要内容 2 部分代码 3 程序结果 4 下载链接 1 主要内容 这是一篇代码勘误&#xff0c;该程序复现文献《基于多目标粒子群算法的微电网优化调度》&#xff0c;代码实现了多目标优化调度模型——考虑微电网系统运行成本和环境保护成本的并网模式下微电网多目标优化调…

【NCRE 二级Java语言程序设计01】全国计算机等级考试初识

目录 前言一、认识全国计算机等级考试1.官方的自我介绍2.省级和全国级的区别3.考试内容 二、NCRE正确入口三、官方重要资源分布1.大纲教材2.相关下载3.试题选登4.常见问题 总结 前言 &#x1f4dc; 本专栏主要是分享自己备考全国计算机二级Java语言程序设计所学心得体会、所搜集…