Qt---项目代码解析


一、main.cpp代码解析

main函数的形参就是命令行参数。qt是C++Definitely图形界面化编程,要想编写一个qt的图形界面程序,一定要有QApplication对象。

Widget则是在创建项目的时候填写的生成的类名。

.show()方法让控件显示出来。.hide()方法让空间隐藏。Widget的父类是QWidget,show和hide两个方法都是由QWidget提供的。a.exec()方法表示让程序执行起来。之前在Linux中,也学过六个函数(exec*)exec家族,用于进程程序替换,把可执行文件中的代码和数据,替换到当前进程中。

Qt中的exec和Linux中的exec没有任何关系。只是名字恰好一样的。

二、widget.h代码解析

ifndef用来保证头文件只被包含一次。也可以使用 #pragma once

用于定义一个Qt的命名文件和声明一个名为 Widget 的类。QT_BEGIN_NAMESPACE 这是一个命名空间开始标记。在这个命苦空间中,创建了一个Ui的子命名空间。在Ui的命名空间中,声明了一个Widget的类,但是并没有提供类的具体定义。QT_END_NAMESPACE是命名空间结束标记。

Widget是我们创建项目的时候,所命名的类,继承QWidge。这个父类是Qt SDK内置的。要想使用这个类,就需要包含对应的头文件。 #include <QWidget>。在qt中使用内置的类,包含的头文件的名字就是和类名一致的。当然也可能存在间接包含。后续写代码的原则就是,一个qt的类,先用,如果直接能用,说明对应的头文件已经间接被包含过了,无需显示的在包含一遍,如果这个类找不到,包含对应头文件即可。

Qt中引入了对象树机制,后面会介绍。创建Qt的对象就可以把这个对象给挂到对象树上,往树上挂的时候就需要指定父节点。


Q_OBJECT是一个Qt内置的宏,宏本质上是文本替换。Q_OBJECT展开之后,就会生成一大堆代码。Qt中有一个非常核心的机制,信号和槽。如果某个类想使用 信号和槽 就需要引入Q_OBJECT这个宏


这个东西跟是密切相关的。用来做ui。

可以用拖拽的方式,实现对界面的操作。

三、widget.cpp代码解析

这个文件中的代码并不复杂,

创建项目生成的头文件。

form file 被 qmake 生成的头文件

把 form file生成的界面和当前的widget关联起来。把new的对象给释放了。


(一) form file

再双击widget.ui之后,会进入到一个图形化的界面编辑器。

左边的Layouts,Spacers等都是一些控件,拖拽到右侧的界面上可以创建出控件。

在右下角可以编辑你拖拽的控件,修改控件的属性(字体大小,颜色)等。

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Widget</class>
 <widget class="QWidget" name="Widget">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>800</width>
    <height>600</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Widget</string>
  </property>
 </widget>
 <resources/>
 <connections/>
</ui>

这个界面编辑器的源码是xml格式。跟html挺类似的,都是使用成对的标签来表示数据。

四、.pro Qt项目的工程文件

表示我们当前引入的模块,后面会引入一些其他的模块。

表示当前项目中,参与构建的文件都有什么(编译器要编译哪些文件)这个地方不需要手动修改,Qt Creator 帮咱们自动维护好。


上面看到的头文件,cpp文件等都是源代码,如果编译运行qt项目,会生成一些其他的文件。

运行代码之后,生成了一个build……的文件夹。

这些都是自动生成的文件。

编译Qt程序,还是会用到Makefile文件,这个文件是qmake自动生成的。


在debug文件夹中,存在一个.exe文件,这个文件就是在项目运行之后生成的,双击.exe文件,就可以运行项目了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值