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

一、主要步骤

        首先,通过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转换为QByteArraychar*  ch;QByteArray ba = msg.toLatin1(); // mustch=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.hqwc.cn/news/94495.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【算法竞赛宝典】语言之争

【算法竞赛宝典】语言之争 题目描述代码展示 题目描述 代码展示 //语言之争 #include<fstream> #include<string>using namespace std;ifstream cin("language.in"); ofstream cout("language.out");string a; int n;int main() {int i;bool …

基于Matlab实现多个图像增强案例(附上源码+数据集)

图像增强是数字图像处理中的一个重要步骤&#xff0c;它通过一系列的算法和技术&#xff0c;使图像在视觉上更加清晰、明亮、对比度更强等&#xff0c;以便更好地满足人们的需求。在本文中&#xff0c;我们将介绍如何使用Matlab实现图像增强。 文章目录 部分源码源码数据集下载…

eslint和prettier格式化冲突

下载插件 ESLint 和 Prettier ESLint 进入setting.json中 setting.json中配置 {"editor.tabSize": 2,"editor.linkedEditing": true,"security.workspace.trust.untrustedFiles": "open","git.autofetch": true,"…

对话出海企业:2023亚马逊云科技出海日圆桌论坛

在全球经济亟待复苏的今天&#xff0c;持续对外开放是中国未来经济发展重要的“两条腿”之一。在愈发饱和的国内市场&#xff0c;中国企业需要对外寻找全新机遇才能在未来不确定的市场博弈下生存下去。“出海”&#xff0c;也成为近几年最炙手可热的词汇之一&#xff0c;大量中…

002图的基本概念与表示方法

文章目录 一. 图的组成二. 本体图2.1 什么是本体图2.2 怎么设计本体图 三. 图的种类3.1 按连接是否有向分3.2 按本体图分3.3 按连接是否带权重分 四. 节点连接数&#xff08;节点的度&#xff09;4.1 无向图节点的度4.2 有向图节点的度 五. 图的表示方法5.1 邻接矩阵5.2 连接列…

聊一下互联网红利并牢牢抓住

关于互联网红利&#xff0c;想必大家并不陌生 在过去的十年&#xff0c;互联网诞生了很多野蛮生长的企业&#xff1a;比如&#xff1a;美团&#xff0c;滴滴&#xff0c;小米&#xff0c;字节等 雷军有句名言&#xff0c;猪站在风口上&#xff0c;都能飞起来 就是如此 自古有三…

3年功能测试经验,面试想拿到15k很难吗?

一直觉得经验多&#xff0c;无论在哪都能找到满意的工作&#xff0c;但是现实却是给我打了一个大巴掌&#xff01;事后也不会给糖的那种... 个人情况 大概介绍一下个人情况&#xff0c;男&#xff0c;本科&#xff0c;三年多测试工作经验&#xff0c;一毕业因为不成熟的经验以…

c#事件(event)

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

算法:分治思想处理归并递归问题

文章目录 算法原理实现思路典型例题排序数组数组中的逆序对计算右侧小于当前元素的个数 总结 算法原理 利用归并思想进行分治也是很重要的一种思路&#xff0c;在解决逆序对的问题上有很大的需求空间 于是首先归并排序是首先的&#xff0c;归并排序要能写出来&#xff1a; c…

【ES6】Promise.all用法

Promise.all()方法用于将多个 Promise 实例&#xff0c;包装成一个新的 Promise 实例。 const p Promise.all([p1, p2, p3]);上面代码中&#xff0c;Promise.all()方法接受一个数组作为参数&#xff0c;p1、p2、p3都是 Promise 实例&#xff0c;如果不是&#xff0c;就会先调…

网站搭建最简化的引导操作 | 云服务器的购买选用 | 域名的选用 | 网站的上线和备案。

本文章面向对象为网站搭建的初次操作者&#xff0c;主要是一些自主使用的网站&#xff0c;为小白做为引导的教程。 一&#xff0c; 网站搭建的流程 1&#xff0c;服务器的租赁 2&#xff0c;购买域名 3&#xff0c;对域名进行备案 4&#xff0c;网站内部的搭建&#xff0c;上线…

六、vim编辑器的使用

1、编辑器 (1)编辑器就是一款软件。 (2)作用就是用来编辑文件&#xff0c;譬如编辑文字、编写代码。 (3)Windows中常用的编辑器&#xff0c;有自带的有记事本(notepad)&#xff0c;比较好用的notepad、VSCode等。 (4)Linux中常用的编辑器&#xff0c;自带的最古老的vi&…