目录
Qt 的介绍
创建一个 Qt 程序
Qt 的框架
项目文件(.pro)
创建一个空的 Qt 程序(hello qt)
Qt 的介绍
Qt是一个跨平台的C++用户图形界面应用程序框架。
创建一个 Qt 程序
1、首先,我们需要新建一个Qt程序。点击文件→新建文件或项目。
2、在弹出的子窗口中,选择Application下的Qt Widgets Application,再点击Choose。
3、接着,填写项目名称和存放的路径。
4、选择要使用的编译器
5、选择基本类的基类,并填写基本类的类名
P.S:
QMainWindow主要用于PC端,即带菜单栏的windows窗口;
QWidget是其他所有用户界面元素的基类;
QDialog是对话框,用于执行短期任何或者与用户进行交互。
假设我们指定的基本类类名为className,工程创建完毕后,工程目录下会生成className.h、className.cpp以及main.cpp三个主要的文件。
6、至此,一个Qt Widgets Application 创建完毕。
Qt 的框架
以下是创建一个application后main.cpp文件中自动生成的内容,MyWidget是创建项目时我们指定的基本类名称。
//main.cpp
#include "mywidget.h"
//QApplication应用程序类
//Qt头文件没有.h
//头文件和类名一样
#include <QApplication>
int main(int argc, char *argv[])
{
//有且只有一个应用程序类的对象,也就是这里的a
QApplication a(argc, argv);
//MyWidget继承于QWidget,QWidget是一个窗口基类
//所以MyWidget也是窗口类
//w就是一个窗口对象
MyWidget w;
//窗口创建默认是隐藏的,需要人为显示,用show方法来显示它
w.show();
//这一句等同于
//a.exec();
//return 0;
return a.exec();
}
P.S:exec()的作用是利用while让程序一直执行,直到用户操作中断这个循环。
实验:
1)常规做法,return a.exec()
#include "Widget.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w; w.show(); return a.exec(); }
如图所示,显示一个空白的窗口。
2)将 return a.exec(); 改为return 0;
发现窗口会一闪而过。
原因是直接 return 0 就达不到事件循环并显示的效果,程序直接退出了,而exec就是在这里进行了循环,一直循环处理着用户和系统的事件。
3) 在return a.exec(); 前面加上一个死循环 while(1);
鼠标指针变为加载中,并且窗口无法关闭。
结论:
exec() 的作用:
1. 进入时间循环;
2. wait,直到响应a可能的输入;
3. QT接收和处理用户及系统交代的事件(消息),并传递到各个窗口;
4. 程序遇到 exit() 退出时,机会返回 exec() 的值。
【转自:https://0x9.me/b0WEM】
下面是Qt项目的基本框架
//main.cpp
#include "mywidget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//自己写的内容
return a.exec();
}
//mywidget.cpp
#ifndef MYWIDGET_H
#define MYWIDGET_H
#include <QWidget>
class MyWidget : public QWidget
{
Q_OBJECT //信号与槽时需要使
public:
MyWidget(QWidget *parent = 0);
~MyWidget();
};
#endif // MYWIDGET_H
P.S:强烈建议所有QObject的子类都使用Q_OBJECT宏,不管实际上是否使用信号和槽,以及属性。
【详见:】
项目文件(.pro)
.pro文件用#来进行注释,注释范围到该行末尾。
使用头文件时,要在工程项目文件中加入对应的模块(找到头文件,按F1,在帮助文档中会显示对应的模块)。
比如使用QWidget需要在.pro文件中加入 QT += core gui
#-------------------------------------------------
#
# Project created by QtCreator 2020-06-26T23:46:04
#
#-------------------------------------------------
#模块
QT += core gui
#高于4的版本,添加QT += widgets,为了兼容Qt4
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
#应用程序的名字,可以修改,相应的.exe名称也会同步更新
TARGET = 01_QtTest
#指定Makefile的类型,app
TEMPLATE = app
#源文件 .cpp文件
SOURCES += main.cpp\
mywidget.cpp
#头文件 .h文件
HEADERS += mywidget.h
创建一个空的 Qt 程序(hello qt)
1、创建一个空项目,点击New Project-其他项目-empty qmake project。创建后只有一个.pro文件,并且为空。
2、先在.pro文件中添加模块,写入
QT += widgets
3、然后创建main.cpp文件,右键项目→添加新文件→-c++/c++ source file。
4、写入以下代码,至此我们自己实现了一个简单的Widget窗口。
#include <QApplication>
#include <QWidget> //窗口控件基类
int main(int argc,char **argv){
QApplication app(argc,argv);
QWidget w;
w.setWindowTitle("helloqt"); //设置窗口标题
w.show(); //显示窗口
app.exec();
return 0;
}
P.S:build-文件夹在编译时自动生成