# **3\. 第一个Qt小程序** ## [](#)**3.1 按钮的创建** 在Qt程序中,最常用的控件之一就是按钮了,首先我们来看下如何创建一个按钮 ```c++ QPushButton * btn = new QPushButton; 头文件 #include //设置父亲 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函数即可,如果想设置按钮上显示的文字利用setText,移动按钮位置用move 对于窗口而言,我们可以修改左上角窗口的标题setWindowTitle,重新指定窗口大小:resize,或者设置固定的窗口大小setFixedSize; ## [](#)**3.2 [](#)对象模型(对象树)** 在Qt中创建对象的时候会提供一个Parent对象指针,下面来解释这个parent到底是干什么的。 - QObject是以对象树的形式组织起来的。 - 当你创建一个QObject对象时,会看到QObject的构造函数接收一个QObject指针作为参数,这个参数就是 parent,也就是父对象指针。 这相当于,**在创建QObject对象时,可以提供一个其父对象,我们创建的这个QObject对象会自动添加到其父对象的children()列表。** - **当父对象析构的时候,这个列表中的所有对象也会被析构。(注意,这里的父对象并不是继承意义上的父类!)** 这种机制在 GUI 程序设计中相当有用。例如,一个按钮有一个QShortcut(快捷键)对象作为其子对象。当我们删除按钮的时候,这个快捷键理应被删除。这是合理的。 - QWidget是能够在屏幕上显示的一切组件的父类。 - **QWidget继承自QObject,因此也继承了这种对象树关系。一个孩子自动地成为父组件的一个子组件**。因此,它会显示在父组件的坐标系统中,被父组件的边界剪裁。例如,当用户关闭一个对话框的时候,应用程序将其删除,那么,我们希望属于这个对话框的按钮、图标等应该一起被删除。事实就是如此,因为这些都是对话框的子组件。 - 当然,\*\*我们也可以自己删除子对象,它们会自动从其父对象列表中删除。\*\*比如,当我们删除了一个工具栏时,其所在的主窗口会自动将该工具栏从其子对象列表中删除,并且自动调整屏幕显示。 Qt 引入对象树的概念,在一定程度上解决了内存问题。 - 当一个QObject对象在堆上创建的时候,Qt 会同时为其创建一个对象树。不过,对象树中对象的顺序是没有定义的。这意味着,销毁这些对象的顺序也是未定义的。 - 任何对象树中的 QObject对象 delete 的时候,如果这个对象有 parent,则自动将其从 parent 的children()列表中删除;如果有孩子,则自动 delete 每一个孩子。Qt 保证没有QObject会被 delete 两次,这是由析构顺序决定的。 如果QObject在栈上创建,Qt 保持同样的行为。正常情况下,这也不会发生什么问题。来看下下面的代码片段: ```c++ { QWidget window; QPushButton quit("Quit", &window); } ``` 作为父组件的 window 和作为子组件的 quit 都是QObject的子类(事实上,它们都是QWidget的子类,而QWidget是QObject的子类)。这段代码是正确的,quit 的析构函数不会被调用两次,因为标准 C++要求,**局部对象的析构顺序应该按照其创建顺序的相反过程**。因此,这段代码在超出作用域时,会先调用 quit 的析构函数,将其从父对象 window 的子对象列表中删除,然后才会再调用 window 的析构函数。 但是,如果我们使用下面的代码: ```c++ { QPushButton quit("Quit"); QWidget window; quit.setParent(&window); } ``` 情况又有所不同,析构顺序就有了问题。我们看到,在上面的代码中,作为父对象的 window 会首先被析构,因为它是最后一个创建的对象。在析构过程中,它会调用子对象列表中每一个对象的析构函数,也就是说, quit 此时就被析构了。然后,代码继续执行,在 window 析构之后,quit 也会被析构,因为 quit 也是一个局部变量,在超出作用域的时候当然也需要析构。但是,这时候已经是第二次调用 quit 的析构函数了,C++ 不允许调用两次析构函数,因此,程序崩溃了。 由此我们看到,Qt 的对象树机制虽然帮助我们在一定程度上解决了内存问题,但是也引入了一些值得注意的事情。这些细节在今后的开发过程中很可能时不时跳出来烦扰一下,所以,我们最好从开始就养成良好习惯,在 Qt 中,尽量在构造的时候就指定 parent 对象,并且大胆在堆上创建。 ## [](#)**3.3[](#) Qt窗口坐标体系** [](#)坐标体系: 以左上角为原点(0,0),X向右增加,Y向下增加。 ![](data:image/png;base64,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) 对于嵌套窗口,其坐标是**相对于父窗口**来说的。