一、Qt按钮小程序
1. 按钮的创建和父子关系
在Qt程序中,最常用的控件之一就是按钮了,首先我们来看下如何创建一个按钮:
#include <QPushButton>
QPushButton * btn = new QPushButton;
//设置父亲
btn->setParent(this);
//设置文字
btn->setText("德玛西亚");
//移动位置
btn->move(100,100);
//第二种创建
QPushButton * btn2 = new QPushButton("孙悟空",this);
//重新指定窗口大小
this->resize(600,400);
//设置窗口标题
this->setWindowTitle("第一个项目");
//限制窗口大小
this->setFixedSize(600,400);
上面代码中,一个按钮其实就是一个QPushButton类的对象,如果只是创建出对象,是无法显示到窗口中的,所以我们需要依赖一个父窗口,也就是指定一个父亲,利用setParent函数或者按钮创建的时候通过构造函数传参,此时我们称两个窗口建立了父子关系。在有父窗口的情况下,窗口调用show会显示在父窗口中,如果没有父窗口,那么窗口调用show显示的会是一个顶层的窗口(顶层窗口是能够在任务栏中找到的,不依赖于任何一个窗口而独立存在)(按钮也是继承于QWidget,也属于窗口)。
如果想设置按钮上显示的文字可以用setText,移动按钮位置用move。
对于窗口而言,我们可以修改左上角窗口的标题setWindowTitle,重新指定窗口大小:resize,或者设置固定的窗口大小setFixedSize。
2. Qt窗口坐标体系
通过以上代码可以看出Qt的坐标体系。以左上角为原点(0,0),以向右的方向为x轴的正方向,以向下方向为y轴的正方向。如下图所示:

对于嵌套窗口,其坐标是相对于父窗口来说的。顶层窗口的父窗口就是屏幕。
3. 对象树模型
QObject是Qt里边绝大部分类的根类(基类)。
- QObject对象之间是以对象树的形式组织起来的。
- 当两个QObject(或子类)的对象建立了父子关系的时候。子对象就会加入到父对象的一个成员变量叫children(孩子)的list(列表)中。
- 当父对象析构的时候,这个列表中的所有对象也会被析构。(注意,这里是说父对象和子对象,不要理解成父类和子类)
- QWidget是能够在屏幕上显示的一切组件的父类
- QWidget继承自QObject,因此也继承了这种对象树关系。一个孩子自动地成为父组件的一个子组件。我们向某个窗口中添加了一个按钮或者其他控件(建立父子关系),当用户关闭这个窗口的时候,该窗口就会被析构,之前添加到他上边的按钮和其他控件也会被一同析构。这个结果也是我们开发人员所期望的。
- 当然,我们也可以手动删除子对象。当子对象析构的时候会发出一个信号destroyed

本文详细介绍了Qt编程中的按钮创建和父子关系,包括如何设置按钮文字和位置。同时,阐述了Qt窗口的坐标体系和对象树模型,强调了对象树在内存管理中的作用。文章还深入讨论了信号和槽机制,包括系统自带的信号槽以及如何自定义信号和槽。最后,提到了Qt4与Qt5中信号槽的不同写法,以及Lambda表达式在Qt编程中的应用,展示了如何使用Lambda作为槽函数来简化代码。
—— 父子关系、对象树、信号和槽(自定义信号和槽、Qt5与Qt4的写法)&spm=1001.2101.3001.5002&articleId=129903559&d=1&t=3&u=1626e207ec2642ec964b2e42c1c5775c)
2460

被折叠的 条评论
为什么被折叠?



