项目程序的简单了解
第一部分 main.cpp
#include "mywidget.h"
#include <QApplication> //包含一个应用程序类的头文件
//main函数代表程序入口 argc代表命令行变量的数量 argv代表命令行的数组,用来存储命令行
int main(int argc, char *argv[])
{
//a代表应用程序对象,在Qt中,应用程序对象有且仅有一个
QApplication a(argc, argv);
//myWight父类为QWight QWight代表空窗口 w为窗口对象
myWidget w;
//窗口对象默认不会显示,要调用show方法展示
w.show();
//exec函数可以让应用程序对象a进入消息循环机制 相当于进入永真循环
//在循环中程序时刻在捕捉用户的交互行为并执行,遇到点击窗口右上角叉号的行为退出循环
return a.exec();
}
运行结果
第二部分工程文件.pro
QT += core gui //该语句代表QT包含的模块 core核心模块 gui用户图形模块
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets //版本大于4的QT还包含widgets模块 该模块是从gui模块中分离出来的
CONFIG += c++17
# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
//项目中新建文件时也会更新到这里
SOURCES += \ //源文件
main.cpp \
mywidget.cpp
HEADERS += \ //头文件
mywidget.h
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
第三部分头文件mywidget.h
//#ifndef #define #endif用于防止头文件被重复引用 降低编译效率 某些头文件重复引用会出现错误
//#ifndef 代表 if not define xxx.h
//要紧接着写入#define xxx.h代表引入xxx/h
//最后写#endif 代表否则不需要引入
#ifndef MYWIDGET_H
#define MYWIDGET_H
//包含头文件QWidget窗口类
#include <QWidget>
class myWidget : public QWidget //以public方式继承父类QWidget
{
Q_OBJECT //Q_OBJECT宏 允许类中使用信号和槽的机制
public:
myWidget(QWidget *parent = nullptr); //有参构造函数 若传入的parent无值则默认为空
~myWidget(); //析构函数
};
#endif // MYWIDGET_H
第四部分mywidget.cpp
#include "mywidget.h"
// ::代表作用域解析运算符 说明后边的成员函数属于myWidget类
// myWidget(QWidget *parent)代表函数声明
// :代表该函数的初始化列表 冒号再加上QWidget(parent),表示调用QWidget类的构造函数,
// 并将传入的parent参数作为QWidget的构造函数的参数
myWidget::myWidget(QWidget *parent)
: QWidget(parent)
{
}
myWidget::~myWidget()
{
}
命名规范
类名 首字母大写 单词与单词之间首字母大写
函数名 变量名称 首字母小写 单词与单词之间首字母大写
快捷键
注释 ctrl + /
运行 ctrl + r
编译 ctrl + b
字体缩放 ctrl + 鼠标滚轮
查找 ctrl + f
整行移动 ctrl + shift + ↑ / ↓
帮助文档 F1
自动对齐 ctrl + i
同名之间的.h和.cpp切换 Fn + F4