QT初体验1:如何学习QT之个人浅见,以及如何读取文本文件,在调试信息中输出。

2017年11月初,随着工作岗位的调动,我转到了研发岗,开始了漫漫程序员的成长之路。首先介绍下个人知识储备,大一学习过C语言,没有工程经验,所学是为了期末考试+2级考试,考完在大学+硕士期间没有用到编程。

来到新的工作岗位,心情是既激动又忐忑的,作为一名青铜段位程序员,我得好好规划下学习、成长的路径。

我选择的方法是,跟着项目走,工作中不可能给你大把时光来造作,去把厚厚的C++ Primer or C++ Primer Plus给通读一遍。带着任务去学习,学的最快。具体而言,我的学习思路是:

1. 首先,找到一个网站的C++教程(要求必须精简),大致了解面向对象的思路、类、对象、构造、析构等等各种概念,心中有数即可,练习题都不用做,没时间啊。有大把时光的学生党当然还是老老实实地打好基础,按部就班跟教材走最好。

2. 上述1大概花2天时间搞定,此时可以开始动手了。这个时候推荐QT这个IDE,主要原因是颜值高、自带assistant、丰富的类库,带designer,哪怕你啥都不会,都可以很爽快地在设计界面加上lineEdit写上自己的大名,做出一个对话框,满满的成就感。如我这般初学者上手最好要看到程序输出结果,用成就感正反馈兴趣,才能带起自己的节奏啊。

3. 跟着网上一个QT的教程,用1-2天时间大致试一试各种功能,一定要将教程的代码自己敲到IDE中(不建议复制),在这过程中,你会加深对类、对象、指针的印象,有不懂的就问度娘,去找大神的博客学习。

4. 做工程,相比此时你手头肯定有工作任务,那就顺着任务一点一点往下啃吧。

比如,我的第一个工作任务,就是要读一个文本文件,再存到另一个文件中去。接到这个任务要怎么考虑呢?

首先,百度“C++如何读文本文件”,你会看到推荐用“fstream”的各种网页。让我们再搜一把“QT如何读文本文件”,你会看到推荐用“QFile和QTextStream”的各种网页。对新手来说,肯定选后者啊,先易后难,就跟考试做题一样,自带assistant和丰富的example的QT是很好的选择,值得拥有。

其次,就开始看这两个类,推荐先别看assistant,因为里面太详细了,又有语言关要过,直接先百度找例子,看看大神们写的最简单的例子,马上就可以用了,自己建一个工程,建一个.txt文件,写上几行,马上就能见到效果。

再次,等各种求助、磕磕绊绊把任务给搞定后,别忘了最重要的一步——总结,把你借鉴的知识点变成自己的。什么样算变成自己的呢?个人认为有一个标准:在不查各种资料的情况下,能轻易写出代码,并给一个如我这般的萌新讲清楚。注意,讲清楚,并不需要你成为专家,能把assistant里面所有的知识点都能讲解到。学知识讲究一个循序渐进,对单个知识点的理解、认识也是逐步加深的,就像当下的深度学习、机器学习,从来没听说遍历第一遍样本就能学到位的。

===================================================================================================================

那么回到标题的第二部分:如何读取文本文件,在调试信息中输出呢?显然,这个命题并不难,我也没有掌握QFile和QTextStream类的所有知识点,但是我会讲解到目前11月20日我的理解。

首先,QT提供了非常丰富的C++库,就文本读写而言,使用较多的是QFile和QTextStream这两个类。

我们首先要将QFile这个类实例化,其方法就是构建一个QFile类的对象,即QFile file(...);

1 QFile file("qingtong.txt");

如上面这行,将建立一个QFile类的对象file,这个file在当前文件夹下的名称叫做qingtong.txt,我们可以将路径放在双引号内:

QFile file("C:/users/qingtong.txt");

文件对象定义好后,要打开它,要用到的是QFile类的成员函数open(),同时一般会定义打开方式和文本格式,一种最常用的方法是:

1 if (!file.open(QFile::ReadOnly|QFile::Text))
2 {
3     qDebug("%s", qPrintable("Error: Can‘t open this file!"));
4     return a.exec();
5 }

我对这段代码的看法是,先知道怎么用,再去理解代码每一行是什么意思,这里重点是将file.open操作放在if语句后面,在执行open操作后进行一次打开是否成功的判别,如果不成功就会执行括号内的语句,qDebug是一个QT的全局函数,其用法之一是上面这种,用于输出调试信息的。return a.exec()对应于main函数,上来就会先定义一个QApplication的对象a,这里返回a.exec(),也可以先不考虑为什么要这样做,先让程序能奔跑起来。

接着,将QTextStream这个类实例化,根据你要做的事(读in,写out)来创建对象,例如我现在要读,那么:

QTextStream in(&file);

这里的in是QTextStream的对象,括号内是QFile对象file的引用。

然后就可以开始读了,QTextStream有一些函数用于规定读的方式,使用较多的一种方式是调用readLine函数,即一行一行阅读。例如,我可以用:

1 QString list = in.readLine();
2 qDebug("%s", qPrintable(list));

这两行代码来输出qingtong.txt文件的第一行内容。其中要注意:readLine前面调用该函数的对象是in,不是file,因为readLine函数是QTextStream类的函数,而不是QFile类的。在网上流传的某版本readLine用法代码中出现了这一处小问题,此处予以提示。

通过上面这几行简单的代码,你就可以自己实现一个小程序了,读出qingtong.txt文件的第一行,输出到调试信息中。完整代码如下:

 1 #include <QApplication>
 2 #include <QFile>
 3 #include <QTextStream>
 4 #include <QDebug>
 5 #include <QString>
 6 //头文件包含,如我这般萌新可以用到什么类就包含什么,其实有的类可以不包含,比如后两个。
 7
 8 int main(int argc, char *argv[])
 9 {
10     QApplication a(argc, argv);
11     QFile file("C:/users/qingtong.txt");
12     if(!file.open(QFile::ReadOnly|QFile::Text))
13    {
14          qDebug("%s", qPrintable("Error: Can‘t open this file!"));
15          return a.exec();
16    }
17     QTextStream in(&file);
18     QString list = in.readLine();
19     qDebug("%s", qPrintable(list));
20     return a.exec();
21 }

上述代码很快就实现了一个功能,是不是很简单呢?接下来要做的就是去不断扩充功能了,怎么样能把所有的文件都读出来呢?怎么样能用文本框输出呢?怎么样能再写入一个新的文本呢?这些问题能帮助你不断扩充这一个知识点。

这是第一篇日志,也是进军IT界的起点,相信到明年这个时候,再看这篇日志一定充满感触。它将不断完善,后续有关文件读写方面的知识,我都将附上更新时间,加在本篇日志的后面。

时间: 2024-10-16 04:40:39

QT初体验1:如何学习QT之个人浅见,以及如何读取文本文件,在调试信息中输出。的相关文章

Qt初体验(二)

QT初体验(二) 1.窗口跳转 想到窗口跳转的实现方式,应该很容易想到新建打开新的窗口,然后关闭当前窗口 首先我们得新建一个窗口的类,然后在当前类中创建这个类的对象,调用Show()函数显示出新窗口,close()函数关闭当前窗口 实现的方式大概就是下面这个样子: ui2 = new Select(); ui2->show(); this->close(); 接下来说一下创建新的窗口类的方法: 选择widget,添加 注意,这里只会给你生成一个.ui文件,而.h和.cpp则需要自己再去创建,也

大数据学习初体验:Linux学习+Shell基础编程+hadoop集群部署

距离上次博客时间已经9天,简单记录下这几天的学习过程 2020-02-15 10:38:47 一.Linux学习 关于Linux命令,我在之前就已经学过一部分了,所以这段时间的linux学习更多的是去学习Linux系统的安装以及相关配置多一些,命令会一些比较常用的就够了,下面记录下安装配置Linux系统时的注意事项. 这里配置的虚拟机的内存为4g 使用的 CentOS-6.5-x86_64-minimal.iso 映射文件 在进入linux系统中时,需要将虚拟机的主机名修改成自己想要的名字,还要

wxWidgets刚開始学习的人导引(3)——wxWidgets应用程序初体验

wxWidgets刚開始学习的人导引全文件夹   PDF版及附件下载 1 前言2 下载.安装wxWidgets3 wxWidgets应用程序初体验4 wxWidgets学习资料及利用方法指导5 用wxSmith进行可视化设计附:学习材料清单 3 wxWidgets应用程序初体验 本文中全部的体验,在Code::Blocks中进行. 为了在Code::Blocks中编译执行C++写的wxWidgets程序,须要再做些设置. 首先,须要在环境变量里增加一个wxWidgets根文件夹环境变量.设置方法

wxWidgets初学者导引(3)——wxWidgets应用程序初体验

wxWidgets初学者导引全目录   PDF版及附件下载 1 前言2 下载.安装wxWidgets3 wxWidgets应用程序初体验4 wxWidgets学习资料及利用方法指导5 用wxSmith进行可视化设计附:学习材料清单 3 wxWidgets应用程序初体验 本文中所有的体验,在Code::Blocks中进行. 为了在Code::Blocks中编译运行C++写的wxWidgets程序,需要再做些设置. 首先,需要在环境变量里添加一个wxWidgets根目录环境变量.设置方法类似于2.3

学习Qt,Getting started

在界面的设计中,现在用的比较多的是Qt和WPF(C#),以前的MFC已出现衰老趋势.本人最近在学习Qt,觉得很有用,遂决定将学习历程记录下来,或许有感于后之来者,不亦乐哉. 一.Hello Qt #include "try_qt.h" #include <QtGui/QApplication> #include <QLabel> int main(int argc, char *argv[]) { QApplication app(argc, argv); QL

第三次随笔--安装虚拟机及学习linux系统初体验

第三次随笔--安装虚拟机及学习linux系统初体验 ·学习基于VirtualBox虚拟机安装Ubuntu图文教程在自己笔记本上安装Linux操作系统 首先按照老师的提示步骤进行VirtualBox虚拟机的安装,安装过程可谓一帆风顺,一马平川,并没有遇到什么问题. ·成功安装之后打开虚拟机 对就是这个样子,略微有一点激动,还好,在自己的电脑上运行并不会有太多的卡顿 ·参考老师的学习方法通过实践学习Linux 基础入门(新版)课程,掌握常用的Linux命令,重点是3/4/5/6/7/8节. 虚拟机安

1.菜鸟的linux学习之路------linux初体验

脚本编程语言通常是解释型的.这类程序的执行,是由解释器读入代码,并将其转换成内部的形式,在执行.请注意,解释器本身是一般的编译型程序. 常用的脚本编程语言有 :awk,Perl,Python,Ruby,Shell.这里的Ruby是日本人研发的. 注释: linux : 1.rm 删除指定的文件 例:rm /Users/apple/Desktop/QQDock.plist 2.假设你想知道现在的系统有多少人在登录,那么 who命令可以实现 3.|管道符号可以在两个程序之间建立管道:who的输出,成

软件测试学习笔记week 3 --- 测试框架初体验

测试框架初体验 在这周的软件测试课上,第一次了解了软件测试框架的概念.软件测试框架包含的范围非常广,从自动化测试框架到单元测试框架以及性能测试框架.在上个寒假中,在学习Coursera的在线课程时发现普林斯顿的单元测试做得非常强大,从程序正确性到Time consuming甚至Memory consuming,几乎能发现程序中的每一处错误或者缺陷.因此,在上完了这周的课程后,我查阅了一些资料,做了这篇随笔记录了解到的单元测试的知识. 一.什么是测试框架 要认识测试框架,首先要对所谓框架有概念.框

Spring学习初体验

一.首先我们要明确我们为什么要学?在我们学习了javaweb基础后,我们基本可以完成基本的网站要求,但是我们为什么要学习和使用使用Spring? 1.降低组件之间的耦合度,实现软件各层之间的解耦. controller----->service--------->dao 2.可以使用容器几桶的众多服务.如:事务管理服务.消息服务.当我们使用容器管理时,开发人员就不再需要手工控制事务,也不需处理复杂的事务传播. 3.容器提供单例模式支持,开发人员不再需要自己编写实现代码. 4.容器提供了AOP技