QT学习之路-记事本

article/2025/10/25 3:45:57

1、在创建记事本之前先明白有哪些功能:
先创建一个菜单栏,菜单栏是用来装各种功能的一个地方在这里插入图片描述如上图所示,文件、编辑所在的地方为菜单栏,

//创建菜单栏QMenuBar *menubar=menuBar();

菜单栏创建好后再创建菜单,菜单在菜单栏里面,
那么很明显,“文件”,“编辑”等就是菜单。
创建命令如下:

//创建菜单QMenu *file=new QMenu("文件",this);menubar->addMenu(file);QMenu*editor=new QMenu("编辑",this);menubar->addMenu(editor);

使用addMenu把菜单放进菜单栏里面,这里可以先去帮助文档里面查找QMenu 有哪些属性和方法。
菜单创建好之后再创建菜单项,菜单项就是菜单里的各个功能,
创建方法如下:

//创建菜单项QAction *open=new QAction("打开",this);QAction *save=new QAction ("保存",this);file->addAction(open);file->addAction(save);

这里如果不知道怎么做,或者不知道用啥命令创建菜单项,可以在另外一个新建的创口中在.ui文件中先手动添加,然后看他是用的啥命令,
在这里插入图片描述之后可以创建工具栏,工具栏的作用是可以显示菜单里面的菜单项,创建方法也可以通过上图的方式先查找,然后再手动添加,加深记忆哈哈。

  QToolBar *toolbar=ui->mainToolBar;toolbar->addAction(open);toolbar->addAction(save);

如果不知道是否可以添加,可以打开索引查找:
在这里插入图片描述查找后发现添加命令是addAction.
这就把菜单项里面的内容添加到工具栏里面了,可以按照需要添加。
然后就是文本编辑器,先添加头文件#include<QTextEdit>,注意,有单行的和多行,这里选择添加多行的。
这里是在.ui文件中收动添加的。在这里插入图片描述所以这里用ui的指针获取文本框。

 text=ui->textEdit;
setCentralWidget(text);

获取之后在索引里面查找QMAinWindow查找属性,把文本框设置为核心部件,不然的话当你拖动窗口是,文本编辑框的大小不会随着改变。
这里的“打开”、“保存”、“编辑”等就是信号,我们点击他们就是触发了这个信号。
2、槽函数
以上准备工作就完成了,剩下的就是当我们点击打开这个菜单项时,可以触发指令,也就是说点击“打开”可以打开我们想要的文件夹。
槽函数现在头文件中的公共区域声明
在这里插入图片描述这里我们需要手动添加public slots:这个公共的槽变量。然后在里面先添加我们第一个槽函数,

void openfile();

这个槽函数声明已经完成了,那么我们需要在.cpp文件中定义这个槽函数,
首先我们要明白这个槽函数需要完成那些动作,因为信号发出后给槽函数,槽函数需要完成一些列你想要的动作。
我们的记事本想要的就是打开文件,把文件里面的内容读到文本编辑器中。
这里就需要添加一个头文件,这个头文件是一个文件对话框,也就是说通过他,我们可以打开一个对话框,那么什么是对话框呢?
在这里插入图片描述这就是一个对话框,我是这样理解的:我们与机器之间的交流的,百度百科说:在用户界面,想用户显示信息的。
首先需要添加文件对话框的头文件#include<QFileDialog>
我们还是可以在索引里面查找对话框的各个属性和方法。

void MainWindow::openfile()
{QString filepath=`QFileDialog::getOpenFileName`(this,"记事本打开文件","D:/","*.txt");if(filepath.isEmpty()){qDebug()<<"空文件夹"<<endl;}else{QFile file(filepath);//创建文件对象if(file.open(QIODevice::ReadOnly | QIODevice::Text)){QByteArray array=file.readAll();QString str(array);qDebug()<<str<<endl;text->setText(str);file.close();}}
}

上面代码的第一行QFileDialog::getOpenFileName是打开文件对话框,获取文件的名字(路径),里面的第三个参数是默认打开哪一个文件对话框,我这里设置的是D盘,最后一个是筛选打开的类型,这里设置的是只保留.txt文件,其余的不打开。
我们按照索引的介绍使用这个文件对话框,先查属性,如下图
在这里插入图片描述可以看到返回的是一个QString类型,所以,我们需要用QString类型接收,如果你想知道返回的到底是啥,你可以用下边这行查看返回值。你回发现真是一个txt文件的路径+txt的名字。

qDebug()<<filepath<<endl;

文件对话框已经获取了文件的完整路径了,但是还没有文件呢,那么接下来该干啥呢?
接下来就该创建文件了,这里要先添加头文件#include<QFile>
使用QFile file(filepath)创建一个文件,这里要把文件的路径名放里面,按照文档上的说明也就是:用给定的父对象构造一个新的文件对象。
同样的,查找QFile 文档属性和方法。得知文件有个open属性,返回的是bool类型的值,open中设定打开文档的方式,这里设定只读(从文档里面读)和换行(读完一行换下一行)。

file.open(QIODevice::ReadOnly | QIODevice::Text)

接下来就是设定读取多少,这里继续查,先查QFile 看有没有读得方法,如果没有就去QFile 的父类中去找
在这里插入图片描述查找一圈后发现没有,那就继续在QFileDevice的父类中找。
在这里插入图片描述最后发现有,并且返回值是QByteArray类型的(也就是数组)在这里插入图片描述既然返回值是一个数组,那么我们就需要用QByteArray创建一个数组去接收。
向text文档中写数组肯定是不行的,要将数组转为字符串类型使用QString,
最后向text中写入内容,想文档编辑器中写入使用的命令为:setText();
记得打开文档之后要用close关闭。
到这里,文件文档的读取的槽函数已经完成了,但是千万不要忘记,要是用connec将信号和槽函数关联起来,这样才是正确的,如下:

connect(open,&QAction::triggered,this,&MainWindow::openfile);

信号发送者是:open,信号的动作是triggered,触发的意思。接受者:MainWindow下的openfile函数,也就是槽函数。
到此这打开的功能算是完成了,但是有一点是要记住,text这个变量要放在头文件的public里面,设置成全局变量,因为下面的两个槽函数要用,如果设置成局部变量的话,两个函数没有访问权限。
按照上边的流程,保存的槽函数也是同样的道理;
但是要替换几个函数,替换成getSaveFileName,看名字可以理解的,QIODevice::WriteOnly这里是只写,因为我们要读编辑器里面的内容写到文档里面。
这里要是用文本编辑流,QTextStream,也可以查索引知道如何使用。使用QTextStream 构造一个文本流对象in,把stdin传入,也就是stdin变成文本流,然后想文本流中输入内容,使用>>(输入符号)。
在这里插入图片描述
从text文档编辑器中读取内容,以字符串的形式返回。
使用setCodec(“UTF-8”)设置中文编码,不然输入中文会乱码。
最后在向文档中输入 text->setText(“”)即可清空所有内容。别忘了关闭文件夹。

 QString textfile=text->toPlainText();
void MainWindow::savefile()
{QString path=QFileDialog::getSaveFileName(this,"保存文件","D:/","*.txt");if(path.isEmpty()){qDebug()<<"空文件夹"<<endl;}else{QFile file(path);if(file.open(QIODevice::WriteOnly | QIODevice::Text)){QString textfile=text->toPlainText();//以文本的形式返回文本编辑的文本,从编辑器中读取内容QTextStream  out(&file);out.setCodec("UTF-8");//设置中文编码out<<textfile<<endl;text->setText("");//向编辑器中输入内容file.close();}}
}

http://chatgpt.dhexx.cn/article/3oCSHNNu.shtml

相关文章

QT学习

文章目录 前言一&#xff1a;Qt的三个基类QObject、QApplication和QWidget一&#xff1a;QObject类二&#xff1a;Qapplication类三&#xff1a;QWidget 二&#xff1a;Qt中QMainWindow、QWidget、QDialog的区别基础知识1&#xff1a;容器类常用的QListQStack和QQueueMap和Mult…

【QT学习之路】QThread的简单使用

QThread的使用说明&#xff1a;QThread线程类是QT已经封装好的&#xff0c; 如果要使用线程&#xff0c; 就派生出子类并且实现线程接口函数run&#xff08;run就是线程任务函数&#xff09; 下面就用QThread实现当前系统时间的获取并且在主界面(UI线程)上显示&#xff0c;实现…

【QT学习之路,QT安装】

1&#xff0c;安装QT 系统环境&#xff1a;ubuntu 22.04 sudo apt-get install build-essential sudo apt-get install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools sudo apt-get install qtcreator sudo apt-get install qt5* 2&#xff0c;安装成功后会有4个程序 3…

qt学习之路(三)之使用QT语言家

一、简介 源代码中经常会出现一些字符串&#xff0c;比如定义要显示在控件上的文本&#xff0c;在不同的语言环境下&#xff0c;可能会需要显示不同语言对应的文本。针对多语言切换的需求&#xff0c;Qt提供的解决方案是&#xff0c;在所有需要翻译的字符串处都使用QObject::tr…

QT学习(2)

事件 事件与信号的关系&#xff1f;&#xff1f; 点击按钮&#xff0c;也会进入到事件循环&#xff0c;处理槽函数 事件对操作系统而言 事件大部分都是由硬件触发&#xff1b;事件产生&#xff0c;操作系统是知道的 鼠标移动&#xff1a; 事件在qt中是由多态去实现的&#xf…

Qt 进阶之路

作者&#xff1a;billy 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 前言 古语有云&#xff1a;“工欲善其事&#xff0c;必先利其器”。一件好的开发工具可以帮助开发者快速、准确的完成任务。博主主要从…

Qt 入门学习路线

参考书目 《C GUI Qt4编程》 一、Qt框架概述 1. 什么是Qt? Qt是一个用C编写的、成熟的、跨平台的GUI工具包&#xff0c;它是挪威Trolltech公司的产品&#xff0c;该公司为商业市场开发、销售和支持Qt及其相关软件。 Qt作为一个出色的软件框架&#xff0c;除了为应用程序提供…

《Qt基础教程之Qt学习之路》

在Qt开源社区中&#xff0c;有一个很好的Qt教程&#xff0c;叫做《Qt 学习之路》&#xff0c;下面是它的链接和目录。 链接地址&#xff1a;http://www.qter.org/thread-629-1-1.html 评论区说上面这个地址打不开&#xff0c;有可能没人管理了。可以试一下面的&#xff1a; h…

Qt学习之路 (一)概述

Qt&#xff08;官方发音 [kju:t]&#xff0c;音同 cute&#xff09;是一个跨平台的 C 开发库&#xff0c;主要用来开发图形用户界面&#xff08;Graphical User Interface&#xff0c;GUI&#xff09;程序&#xff0c;当然也可以开发不带界面的命令行&#xff08;Command User …

QT学习之路

文章目录 一、QT简单介绍二、.pro文件介绍三、 命名规范和常用快捷键以及QPushButton简单使用登录窗口布局控件--按钮组其他常用控件介绍自定义控件封装Qt中的鼠标事件定时器一定时器二event事件分发器事件过滤器绘图事件绘图高级设置绘图设备QFile文件读写操作QFileInfo文件信…

在自己电脑上搭建一个FTP服务器

在自己电脑上搭建一个FTP服务器 因为项目需要&#xff0c;第一次搭建FTP&#xff0c;也是在博客上找的经验&#xff0c;写这篇博客&#xff0c;主要是想记录一下&#xff0c;留个笔记&#xff0c;以防后面需要。 本文是在不借助工具的情况下在自己电脑上搭建FTP服务器。我的是w…

搭建自己本地的IIS服务器

在工作中有时候不想买服务器&#xff0c;这个时候就需要将自己的电脑搭建成服务器。如何搭建呢&#xff1f;其实很简单&#xff0c;以下几步教你搞定。 1. 打开控制面板(window图标直接输入控制面板(control)), 找到程序->程序与功能->启用或关闭Windows功能。 2.找到“…

阿里云服务器如何搭建ip

很多客户的业务要求需要多个ip 来完成业务要求。大家认为的每个服务器只有一个公网ip&#xff0c;那么如何实现多个ip呢&#xff1f;怎样来部署呢&#xff1f; 根据自己需求选择服务器&#xff0c;选购的过程中需要注意的是&#xff1a;实例的网络类型必须是专有网络&#xff…

搭建MQTT服务器

搭建MQTT服务器 一、准备工作二、版本选择三、安装四、遇到的一些问题&#xff1a; 一、准备工作 1.查看&#xff08;Ubuntu&#xff09;系统版本&#xff1a; 使用命令&#xff1a;lsb_release -a 。 2、查看服务器的内核&#xff08;CPU架构&#xff09;&#xff1a; 我使…

域控服务器搭建

系统&#xff1a;windows server 2012 R2 一、 更改为固定IP 二、 修改计算机名称&#xff08;修改完成后重启&#xff09; 三、 打开服务器管理器&#xff0c;找到右上角【管理】-【添加角色和功能】 四、 这里直接点击下一步 五、 默认选择第一个&#xff0c;然后点击下一…

Nginx搭建服务器

第一步&#xff1a;下载安装包 Nginx下载地址 第二步&#xff1a;解压到合适的位置&#xff0c;修改配置 我这边是解压到D:\Program Files (x86)\nginx-1.21.6目录下&#xff0c;然后打开conf文件夹找到nginx.conf配置文件&#xff0c;用Notepad打开 修改下面几个配置即可搭…

搭建自己的服务器代理 yyds

一.购买需要搭建的服务器 为了方便自己搭建使用&#xff0c;直接来到阿里云购买轻量级服务器 点击跳转后&#xff0c;当前界面为服务器配置界面&#xff0c;对于第一次搭建建议购买24元/月的就可以&#xff0c;其次是区域必须为香港只有香港才可以连接到外网&#xff0c;镜像…

搭建文件服务器

文件服务器&#xff0c;又称档案伺务器&#xff0c;是指在计算机网络环境中&#xff0c;所有用户都可以访问的文件存储设备。 下面是搭建文件服务器的步骤&#xff1a; 1.打开Windows服务管理器<仪表盘&#xff0c;选择“添加角色和功能” 2.到这里选择文件服务器相应功能…

家庭宽带搭建服务器

家庭宽带搭建服务器 一、获得公网ip 如果是电信或者联通宽带可以打客服申请公网在线&#xff0c;绝大部分都能通过&#xff0c;理由可以说装监控或者玩游戏。移动宽带目前没用过就不讨论了。 **注意&#xff0c;这里的公网ip是动态公网ip&#xff0c;就是说会不定时更换。**…

搭建国外服务器

搭建国外服务器 学习内容&#xff1a; Namesoil 域名购买配置Cloudflare内容分发购买服务器掌握循环语句 Namesoil 域名购买 网站连接&#xff1a;https://www.namesilo.com/ 登录 搜索自己想要的网址名称 加入购物车 前往购买 支付完成后配置域名 查看域名 对域名进行DNS设…