一.关于Qt
Qt是一个跨平台的C++图形用户界面应用程序框架。
1.常见GUI:
Qt:支持多平台开发,支持CSS,面向对象特性体现突出。
MFC:仅支持windows开发,运行程序效率高,库安全性好。
2.Qt和Qtcreator区别
Qt:通俗来说,是开发工具包
Qtcreator:集成的编译器,Qt的桌面环境
3.代码书写位置
一般情况下,窗口的属性和添加控件以及对控件的操作都会在类的构造函数中书写。
优点:可以使主程序中无多余的代码,便于程序的阅读。
4.Qt项目
QApplication a(argc,argv);
QApplication类:应用程序类,整个后台管理的命脉,管理应用程序的初始化和结束,对事件进行处理和调度。
注意:不管有多少窗口,一个QApplication类即可。
return a.exec(); //主事件循环
在exec函数中,Qt接受并处理用户和系统的事件,并将它们传递给对应的窗口控件。
二.设置窗口属性
修改窗口的标题:
this->setWindowTitle(“名称”);
设置窗口大小,窗口可拉伸:
this->resize(200,300);
设置固定大小,窗口不可拉伸:
this->setFixedSize(500,500);
三.创建按钮
1.创建第一个按钮(方式一)
①包含头文件(.cpp)及模块(.pro)
头文件:#include <QPushButton>
模块:QT += widgets
②调用类的构造函数创建按钮
QPushButton *button=new QPushButton;
③显示按钮并设置按钮属性
将按钮的父对象设置为窗口,让按钮在窗口上显示:button->setParent(this);
另开一个窗口显示按钮:button->show();
设置按钮内容:
button->setText(“内容”);
设置按钮显示位置:
button->move(100,100);
设置按钮大小:
button->setFixedsize(100,200);
2.创建按钮方式二:QPushButton *button2 = new QPushButton(“内容”,this);
区别:
方式一:窗口是默认大小,按钮显示在左上角方式二:窗口是根据按钮大小来创建的,一般要重置窗口大小
四.对象树(对象模型)
1.概念:Qt对象间父子关系。
QObject 是以对象树的形式组织起来的。
在创建 QObject 对象时,可以提供一个它的父对象,我们创建的这个 QObject 对象会自动添加到其父对象的children列表。
当父对象析构时,这个列表中的所有对象也会被析构。
QWidget 是能够在屏幕上显示的一切组件的父类。QWidget 继承自 QObject ,因此也继承了这种对象树关系。
我们也可以自己删除子对象,它们会自动从其父对象列表中删除。
优点:引入对象树的概念,在一定程度上解决了内存问题,简化了内存回收。
2.举例
使用注意:尽量在构造时就指定parent对象,并且大胆在堆上创建(new)。
①正确示范:(构造和析构的顺序相反)
QWidget window;
QPushButton button=QPushButton(“exit”,&window);
先析构button,同时将button从window的子对象列表中删除,然后仅析构window(无子对象)。
②错误示范:(二次析构导致程序崩溃)
QPushButton quit(“exit”);
QWidget window;
quit.setParent(&window);
先析构window及其子对象quit,然后再析构一次quit。
3.窗口坐标体系
窗口左上角为原点,x向右增大,y向下增大。
对于嵌套窗口,其坐标是相对于父窗口来说的。