1. QT写代码的框架
#include <QApplication> //QT的框架头文件
int main(int argc, char *argv[])
{
QApplication a(argc, argv);//QT的框架初始化
return a.exec();//a.exec()作用是让程序不死 类似于while(1)循环 循环检测事件的产生
}
2. 编译时产生的文件
3. 创建空项目
#include <QApplication>
#include <QWidget>
#include <QDebug>
int main(int argc, char *argv[])
{
//QT的框架初始化
QApplication a(argc, argv);
//Qwidget
QWidget win;
win.resize(500, 400);
win.setWindowTitle("hello, bit");
//显示
win.show();
qDebug() << "hello";
//a.exec()de作用是程序不死,类似于while(1)循环
return a.exec();
}
4. QT中的命名规则
对于类的命名 大驼峰法(单词首字母大写) 类:QApplication
对于函数的命名 小驼峰法(,首个单词的首字母小写,后面的单词首字母大写) setWindowTitle
5. .pro文件
5.1 在使用Qt向导生成的应用程序.pro文件格式
QT += core gui //包含的模块
5.1.1 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets //大于Qt4版本 才包含widget 模块
5.1.2 TARGET = QtFirst //应用程序名 生成的.exe程序名称
5.1.3 TEMPLATE = app //模板类型 应用程序模板
5.1.4 SOURCES += main.cpp\ //源文件 mywidget.cpp
5.1.5 HEADERS += mywidget.h //头文件
.pro就是工程文件(project),它是qmake自动生成的用于生产makefile的配置文件。
5.2 .pro文件的写法如下
5.2.1 注释
5.2.2 从“#”开始,到这一行结束。
5.2.3 模板变量告诉qmake为这个应用程序生成哪种makefile。
5.3 下面是可供使用的选择:TEMPL
ATE = app
- n app ‐建立一个应用程序的makefile。这是默认值,所以如果模板没有被指定,这个将被使用。
- n lib ‐ 建立一个库的makefile。
- n vcapp ‐ 建立一个应用程序的VisualStudio项目文件。
- n vclib ‐ 建立一个库的VisualStudio项目文件。
- n subdirs ‐这是一个特殊的模板,它可以创建一个能够进入特定目录并且为一个项目文件生成makefile并且为它调用make的makefile。
- l #指定生成的应用程序名:
- TARGET = QtDemo
- #工程中包含的头文件
- HEADERS += include/painter.h
- #工程中包含的.ui设计文件
- FORMS += forms/painter.ui
- #工程中包含的源文件
- SOURCES += sources/main.cpp sources
- #工程中包含的资源文件
- RESOURCES += qrc/painter.qrc
- l greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
- 这条语句的含义是,如果QT_MAJOR_VERSION大于4(也就是当前使用的Qt5及更高版本)需要增加widgets模块。如果项目仅需支持Qt5,
- 也可以直接添加“QT += widgets”一句。
- 不过为了保持代码兼容, 好还是按照QtCreator生成的语句编写。
- #配置信息
- CONFIG 用来告诉qmake关于应用程序的配置信息。
- CONFIG += c++11 //使用c++11的特性
- 在这里使用“+=”,是因为我们添加我们的配置选项到任何一个已经存在中。这样做比使用“=”那样替换已经指定的所有选项更安全。
6. qt简单的应用程序
#include <QApplication>
#include <QWidget>
int main(int argc, char *argv[])
{
//QT的框架初始化
QApplication a(argc, argv);
//显示
win.show();
//a.exec()de作用是程序不死,类似于while(1)循环
return a.exec();
}
6.1 解释:
Qt系统提供的标准类名声明头文件没有.h后缀
Qt一个类对应一个头文件,类名就是头文件名
6.2 QApplication应用程序类
- 管理图形用户界面应用程序的控制流和主要设置。
- 是Qt的整个后台管理的命脉它包含主事件循环,在其中来自窗口系统和其它资源的所有事件处理和调度。它也处理应用程序的初始化和结束,并且提供对话管理。
- 对于任何一个使用Qt的图形用户界面应用程序,都正好存在一个QApplication 对象,而不论这个应用程序在同一时间内是不是有0、1、2或更多个窗口。
6.3 a.exec()
程序进入消息循环,等待对用户输入进行响应。这里main()把控制权转交给Qt,Qt完成事件处理工作,当应用程序退出的时候exec()的值就会返回。在exec()中,Qt接受并处理用户和系统的事件并且把它们传递给适当的窗口部件。
7. 代码书写的位置
代码书写位置通过之前内容见讲解,新创建的qt项目工程的文件结构,如图所示:
那么如果要设置窗口的属性或者添加一些控件,代码应该在哪个文件书写呢?
.pro文件用于生成可执行文件,.h存放头文件、类等,widget.cpp中主要存放.h文件中函数的实现过程,main.cpp主要是主程序
main.cpp文件中有一句代码:
Widget w;
Widget类实例化的对象w,此时会调用构造函数,对如果对当前Widget类中的构造函数中写入设置的属性或者添加一些控件,当实例化对象是就会调用构造函数,从而实现想要达到的目的,并且这样做也不会使得主函数中有多余的代码
所以一般窗口的属性和添加控件以及对控件的操作都会在类的构造函数中书写
- qt助手通常在安装Qt时都会自带一个Qt助手,方便去查询Qt中的要使用的类和函数等一般会在开始菜单的Qt目录中,一般叫做Assistant
8. 设置窗口的属性
设置窗口的属性,一般写在构造函数中
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
//设置窗口的标题
this->setWindowTitle("hello bit");
//设置窗口不可拉伸
this->setFixedSize(500, 400);
}
9. 按钮的创建和属性设置
.h文件
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = 0);
~Widget();
QPushButton *button;
};
wedget.cpp
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
//button = new QPushButton;
//button = new QPushButton(this); //构造函数时,指定父对象
button = new QPushButton("登录", this); //构造函数时,指定父对象和设置文本
//如果不给按钮指定父对象,那么按钮和窗口是单独显示;
//如果给按钮指定了父对象,只要父对象显示了,按钮也会显示
button->show();
//指定按钮的父类是窗口
button->setParent(this);
//设置按钮的大小
button->resize(300, 200);
//设置按钮的窗口中的位置
button->move(100, 100);
//设置按钮的文本内容
//button->setText("登录");
}
10. Qt窗口坐标体系
坐标体系:
以左上角为原点(0,0),X向右增加,Y向下增加。
对于嵌套窗口,其坐标是相对于父窗口来说的。