大宇私人领地伊甸园丨宁愿做了后悔,也不要错过后悔[www.mrdayu.com]
注册

24小时联系邮箱:[email protected]

所有文章
大宇私人伊甸园: 首页 > 所有文章 > 编程人生 > 系统架构 > QT > 《大宇:Qt入门到精通》 > [002.01]HelloWorld,HelloQt,HelloDayu

[002.01]HelloWorld,HelloQt,HelloDayu

发布时间:2017/11/10 《大宇:Qt入门到精通》 所有文章 阅读:843

副标题:向世界问好,向Qt问好,向自己问好,2018,对自己好一点

前言:

Hello,World!MyQt。通过本章学习,能使您学会创建一个带有文字的窗口程序。

过程:

本章通过:初步的Qt使用》到代码编写》注释讲解》完成向世界问好。

要求:

本篇文章的学习需要读者对main函数有初步的理解。

步骤1:打开Qt

不管你是使用Windows的勇士,还是Linux的魔法师,或者MacBooks的骑士,找到Qt打开的方式是打开Qt学习之旅的第一步,当然各个平台的打开方式也许相同,也许不同,但只要进入到图下阶段,说明你已经打开成功。祝你好运。

步骤2:新建一个项目

打开Qt之后,我们首先得任务就是创建一个项目,在所有编程中,甚至所有编程语言中,每一个大的产品,到小的demo(案例)都可以将其称为一个项目。

我们这篇文章就是首先得教会您如何创建一个属于你自己的项目。

也许英语好的朋友早已发现New Project这个按钮,没错,这就是创建项目的启动按钮,于是,我们将从这里开始。

接下开,选择空项目进行创建:

最后选择Choose,然后一直点击Next按钮,于是我们的空项目就创建完成。

之后的项目为了方便我统一称之为SLN/sln(solution)。

步骤3:写代码

然后创建入口函数(main),我们习惯性的创建一个main.cpp用来包含main函数。

右键SLN,选择C++SourceFile,也许Qt版本不一样,与图片中显示的有所不同,但只需要找到名称一致的。

我们这里名臣改为main.cpp

点击完成:

完毕。

然后输入以下代码,如下图:

讲解:

从编译器角度上讲解:

#include <QApplication>                                  [QApplication类的依赖库]
#include<QLabel>                                         [QLabel类的依赖库]
int main(int argc,char **argv)                           [入口main函数,C++中的argc和argv形参需要显示写出]
QApplication app(argc,argv);                             [创建一个进程]
QLabel *label=new QLabel("Hello Qt,your best dy!")       [创建一个QLabel类,也就是之后会显示出来的窗口]
label->show();                                           [将label类(我们这里称之为标签类),显示出来]
return app.exec();                                       [exec为一个死循环的函数,让之前创建的进程app进入死循环]

讲解演变出来的疑问:

为何我在C/C++中没有见过argc和argv这两个形参:

通常我们在写主函数时都是void main()或int main() {..return 0;},
但ANSI-C(美国国家标准协会,C的第一个标准ANSI发布)在C89/C99中main()函数主要形式为:
(1).int main(void)
(2).int main(int argc,char *argv[]) = int main(int argc,char **argv).
其参数argc和argv用于运行时,把命令行参数传入主程序.其中ARG是指arguments,即参数.具体含义如下:
(参照Arguments to main和C++ Primer7.2.6节)
(1).int argc:英文名为arguments count(参数计数)
count of cmd line args,运行程序传送给main函数的命令行参数总个数,包括可执行程序名,其中当argc=1时表示只有一个程序名称,此时存储在argv[0]中.
(2).char **argv:英文名为arguments value/vector(参数值)
pointer to table of cmd line args,字符串数组,用来存放指向字符串参数的指针数组,每个元素指向一个参数,空格分隔参数,其长度为argc.数组下标从0开始,argv[argc]=NULL.
argv[0] 指向程序运行时的全路径名
argv[1] 指向程序在DOS命令中执行程序名后的第一个字符串
argv[2] 指向执行程序名后的第二个字符串
argv[argc] 为NULL.
因为下标从0开始,之前学习C/C++没有使用到,说明不需要使用

什么是进程,为何要创建进程:

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动
是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;
在当代面向线程设计的计算机结构中,进程是线程的容器。
程序是指令、数据及其组织形式的描述,进程是程序的实体。
没有进程,就没有资源的分配,程序也就是调用系统资源的存在体。

app.exec()的作用是什么:

在以前学习C++的时候,是否一段代码执行完毕,是否就直接结束了?为何要死循环?

运行:

点击左边第一个绿色按钮,参考图下红色方框中的绿色按钮

最终效果:

注意:5.*版本的Qt得在pro文件里面添加一句话:

QT += widgets gui
随便写到哪一行,按N个空格键或者插入到哪行前面都OK,唯独不能插别人里面。

源码:

#include <QApplication>//包含QApplication类头文件
#include <QLabel>//包含QLabel类头文件

int main(int argc, char *argv[])//入口函数,也就是所有程序从这里开始进行运算执行各种操作
{
    QApplication app(argc, argv);//用于定义出app对象,对于此程序的所有资源进行把控
    //定义出一个Qlabel控件,就是一个可以显示文字的label
    QLabel *label = new QLabel("Hello Qt,your best dy!");
    label->show();//定义出来不一定能显示出来,这句话执行的是将上面定义出来的label显示出来
    return app.exec();//程序在此无限循环,让整个程序不结束,除非点了close键
}

 


The bottom line, for me, is simple.

Let’s hope it doesn’t take 500 years for a discipline of testing to becomes the standard for software developers.

From:dayu

您好!请登录

合作网站快捷登录:
点击取消回复

已有2评论

  • 大宇 回复

    Foreign friends, if you don’t have a QQ account, you can directly use your common email registered in this website, I assure you that here will not steal any important information.


    2018年01月13日07:16

大宇博客

点击这里给我发消息 点击这里给我发消息 点击这里给我发消息 点击这里给我发消息