Qt入门学习——Qt快速入门(vim纯代码编写)

写代码前,先需搭建环境,详情请看:《Qt 5.4.2 ubuntu环境搭建》

一个简单空白窗口

打开终端,通过vim first_qt.cpp新建文件,由于Qt代码为C++代码,所以,新建文件的后缀为.cpp

代码内容如下:

#include <QApplication>
#include <QWidget>

int main(int argc, char *argv[])
{
	QApplication app(argc, argv); //初始化

	QWidget w;
	w.show();

	app.exec(); //主事件循环

	return 0;
}

写完代码后,我们需要通过g++编译器(C++编译器)把此代码编译为可执行程序,但由于此代码使用的函数不是C++标准库,而是Qt库,编译时需要指定其所依赖的Qt库,这样比较麻烦。我们可以利用Qt提供的qmake工具来编译Qt的源代码。

qmake所在目录:

配置环境变量,PATH添加qmake路径:

1)复制qmake所在的目录

2)在 ~/.bashrc/etc/profile 脚本最后的位置添加如下代码(/home/mike/Qt5.4.2/5.4/gcc_64/bin 为qmake所在目录,不同环境有所差异):

export PATH=/home/mike/Qt5.4.2/5.4/gcc_64/bin:$PATH

3)运行脚本文件,让设置的环境变量立马生效(source ~/.bashrc),通过which qmake 查看是否设置成功:

接下来,我们通过qmake工程先自动生成工程文件,再通过工程文件生成Makefile,再通过make解析Makefile的指令把源代码编译成可执行程序:

1)生成所需工程文件:qmake -project

qmake工具会根据当前目录源代码自动生成一个后缀为.pro的工程文件,文件名字和当前目录名相同。

打开工程文件,其内容如下:

工程文件简单分析:

1)TEMPLATE:为建立目标文件而采用何种模板。

app, 为建立一个Qt应用程序创建 Makefile文件;

lib, 为建立应用程序库而创建 Makefile 文件。

2)TARGET:描述了目标文件的名称(即可执行文件名)。默认=.pro文件名称=工程目录名。

3)INCLUDEPATH:描述了编译该工程时编译器需要搜索的头文件的路径。

4)#:注释代码

5)HEADERS:告诉编译器,.h 文件路径及其文件文件(这里没有使用到)。

6)SOURCES:告诉编译器, 源代码(.cpp文件)文件路径及其文件名字。

7)FORMS:添加 designer 生成的 .ui 文件(这里没有使用到)。

此工程文件缺少一个很重要的东西:模块的添加。Qt 5 定义了多个模块,每个模块包含相对独立的库文件并实现各自的功能,如果不在工程文件添加相应模块,就算代码编写正确,编译时也会提示很多函数或类未定义。而这里,我们写的代码主要涉及到图形界面,故需在工程文件添加 QtWidgets 模块:QT
+= widgets

2)根据工程文件用qmake命令生成Makefile:qmake

3)使用生成的Makefile编译源代码:make

4)运行可执行程序:./qt

Qt代码基本框架介绍

我们以后写Qt代码时基本上都看到这个一个框架:

1)包含所需头文件:通常和使用到的类同名,Qt的类名通常以‘Q’开头。

2)初始化:创建一个QApplication对象并将用户输入参数传递给它,每一个Qt GUI应用程序都有且只有一个QApplication对象,而且是在定义其他对象之前定义即是说,通常main()中的第一句话通常都是:QApplication
app(argc, argv);
)。它主要用于管理Qt GUI应用程序的控制流程和主要的设置选项,是每个Qt GUI应用程序所必需的。

3)主事件循环:app.exec()是每个Qt应用程序都要调用的函数。程序运行停在这里等待事件(如键盘事件或鼠标事件)的发生,等待用户来操作窗口。

而我们写的代码又是什么意思呢?

QWidget w; //QWidget是Qt窗口基类,根据QWidget创建一个对象w,既是说w是一个窗口对象。

w.show();//窗口创建默认是隐藏的,需要调用show()才能显示出来

Qt程序的外观通常是由各个不同的类的对象组成。

父窗口添加子部件

接下来,我们在原来的空白窗口上添加一个按钮,这里通过指定父对象的方式实现,其流程如下:

1)创建所需按钮

2)按钮指定窗口为其父对象,即按钮放在窗口上

3)显示按钮

修改后的代码如下:

#include <QApplication>
#include <QWidget>
#include <QPushButton> //按钮所需头文件

int main(int argc, char *argv[])
{
	QApplication app(argc, argv); //初始化

	QWidget w;
	w.show();

	//新增的代码
	//创建一个内容为"^_^"的按钮,需要头文件:#include <QPushButton>
	QPushButton button("^_^"); 

	//按钮指定窗口为其父对象,即按钮放在窗口上
	button.setParent(&w);

	button.show(); //显示按钮

	app.exec(); //主事件循环

	return 0;
}

接下来,敲make重新编译代码,运行结果如下:

A部件指定B部件为其父对象,我们看到的直接效果为A部件放在B部件的上面,其实,指定父对象还有如下作用:

1)父对象show的时候会递归调用其所有子对象,让它们都显示出来。

2)父对象被销毁时会递归销毁其所有的子对象,让内存管理更加的简单。

指定父对象主要有两种方式:1)调用setParent()函数 2)创建新部件时通过给构造函数传参指定。

完善后的代码如下:

#include <QApplication>
#include <QWidget>
#include <QPushButton> //按钮所需头文件

int main(int argc, char *argv[])
{
	QApplication app(argc, argv); //初始化

	QWidget w;

	//创建一个内容为"^_^"的按钮,需要头文件:#include <QPushButton>
	//通过给构造函数传参指定w为其父对象
	QPushButton button("^_^", &w); 

	w.show(); //显示父窗口,父窗口上的部件也会跟着显示

	app.exec(); //主事件循环

	return 0;
}

程序运行效果和上面一样。

本教程示例代码下载请点击此链接:http://download.csdn.net/detail/tennysonsky

版权声明:本博客文章,大多是本人整理编写,或在网络中收集,转载请注明出处!!

时间: 2024-10-06 22:52:35

Qt入门学习——Qt快速入门(vim纯代码编写)的相关文章

Qt入门学习——Qt Creator的使用

Qt Creator介绍 通过前面<Qt快速入门(vim纯代码编写)>的学习得知,只有搭建好了 Qt 环境(Qt库和开发工具),即可通过 vim 纯代码编写 Qt 程序,再借助 Qt 里的 qmake 工具编译 Qt 代码,具体流程如下: 1)编写 Qt 代码 2)通过 qmake -project 生成工程文件 3)工程文件中添加所需模块:QT += widgets 4)根据工程文件用 qmake 命令生成 Makefile 5)通过 make 编译代码生成所需可执行程序 6)通过"

Qt入门学习——Qt 5 帮助文档的使用

Qt入门学习——Qt 5 帮助文档的使用 学习图形界面开发,肯定离不开帮助文档的使用,因为它不像 C 语言那样就那么几个函数接口,图形接口的接口可以用海量来形容,常用的我们可能能记住,其它的真的没有必要去记,用到什么就去帮助文档查看用法. 我们使用 Qt 帮助文档,主要分为这么几步: 1)类使用的相关介绍 2)查看所用部件(类)的相应成员函数(功能,参数,返回值) 3)查看部件的信号 4)查看部件的事件(所对应的虚函数如何编写) 1)类使用的相关介绍 光标移动到类名字的地方,接着按“F1”即可跳

RPC学习----Thrift快速入门和Java简单示例

一.什么是RPC? RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议. RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据.在OSI网络通信模型中,RPC跨越了传输层和应用层.RPC使得开发包括网络分布式多程序在内的应用程序更加容易. 二.什么是Thrift? thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和

3、Kafka学习分享|快速入门-V3.0

Kafka学习分享|快速入门 这个教程假定你刚开始是新鲜的,没有现存的Kafka或者Zookeeper 数据.由于Kafka控制控制脚本在Unix和Windows平台不同,在Windows平台使用bin\windows\ 代替 bin/,并且更改脚本扩展名为.bat. 第一步:下载编码 下载0.10.2.0版本并且解压它. 第二步:启动服务器 Kafka使用Zookeeper,因此如果你没有Zookeeper server,你需要先启动a ZooKeeper server.你可以使用Kafka的

OpenGL入门【1 快速入门】

www.qdmm.com/BookReader/1845423,31051137.aspx www.qdmm.com/BookReader/1845423,31073665.aspx www.qdmm.com/BookReader/1845423,31088923.aspx www.qdmm.com/BookReader/1845423,31104070.aspx www.qdmm.com/BookReader/1845423,31114804.aspx www.qdmm.com/BookRea

java学习中,DVD管理系统纯代码(java 学习中的小记录)

java学习中,DVD管理系统纯代码(java 学习中的小记录)作者:王可利(Star·星星) class DvdMain{ public static void main (String[] args){ DvdMgr dvd = new DvdMgr(); //初始化dvd dvd.initial(); //开始进入切换菜单 dvd.startMenu(); } } 1 class DvdSet { 2 3 //定义三个属性 4 String[] name = new String[50];

Qt入门学习——Qt Creator 中 ui 文件和 Qt 代码关系

通过<Qt Creator的使用>的学习,我们可以借助 Designer(界面设计器)快速设计界面. 此例子 ui 内容如下(只是简单添加了一个按钮): 工程的代码目录结构如下: 最终在工程所在目录会生成一个 ui 文件: 此 ui 文件实际上是xml 文件: 当我们编译 Qt 程序代码,Qt Creator 用 uic 工具把 ui 文件的内容转换成 C++ 代码,在工程目录同一级目录的 build- 目录下自动生成 ui_类名.h 文件,如本例子中的 ui_mywidget.h,是由 my

Daydream从入门到精通——快速入门开发基础教程二:Android端开发环境配置二

开始部署 上篇介绍了开发Daydream Android VR需要的基本环境,这篇我们来看看如何部署和运用官方示例. -------------------------------------------------------------------------------------------------------------------- Daydream快速入门开发基础教程一:Android端开发环境配置一 http://blog.csdn.net/jaikydota163/arti

spring mvc入门教程(快速入门,深入分析)

目录 一.前言 二.spring mvc 核心类与接口 三.spring mvc 核心流程图 四.spring mvc DispatcherServlet说明 五.spring mvc 父子上下文的说明 六.springMVC-mvc.xml 配置文件片段讲解 七.spring mvc 如何访问到静态的文件,如jpg,js,css 八.spring mvc 请求如何映射到具体的Action中的方法 九.spring mvc 中的拦截器: 十.spring mvc 如何使用拦截器 十一.sprin