Qt Designer 是属于 Qt Creator 的 一个功能而已,Qt Designer 也叫 UI 设计师或者 UI 设计器,这都是指的同一 个东西而已。
一、在ui文件添加一个按钮
1、新建一个项目
项目名为 02_designer_example

构建系统可选择
CMake
,
qmake, Qbs
对于
CMake
我们比较熟悉,用于生成
Makefile
,那么
qmake
与
Qbs
也同样道理,
qmake
与
cmake
比较常用。我们需要选择
qmake
。

这里默认选择的基类为 QMainWindow
。在
Base class
一项中我们还可以看到还有
QWidget
和
QWialog
这样的基类可以选择。
简单的来说,我们创建 的这个项目是基于 QMainWindow
类去开发的。默认勾选“
Generate form
”,意思是生成
ui
窗体 文件 mainwindow.ui
。为了学习方便,我们统一默认基类为
QMainWindow
,但是注意,在嵌入 式里一般不需要标题栏,状态栏等,所以常用的是 QWidget
基类。
QMainWindow:主窗口类,主窗口具有主菜单栏、工具栏和状态栏。类似于一般的应用程
序的主窗口。如果你想做个嵌套的窗口程序开发的软件,不妨选择这个
QMainWindow
。
QWidget:是可视界面类的基类,也就是说
QMainWindow
类也是由
QWidget
继承封装而来。
所以
QWidget
要比
QMainWindow
功能少一些。
QDialog
:对话框类,建立一个对话框界面。比较少使用此项作为基类。一般
QMainWindow 和 QWidget
作为基类的居多。
注因为
QWidget
不带窗口标题栏等,嵌入式里最好
QWidget




2、按钮添加
将这个
PushButton
的
text
属性(文本属性)改为“关闭程序”。我们
要设计点击这个按钮将关闭这个窗口,关闭这个程序。
3、在ui文件里连接信号与槽
在
UI
设计器里有两种方法可以连接信号与槽。
信号:是一个对象发出的信号
槽:是当这个对象发出这个信号时,对应连接的槽就发被执行或者触发。
UI
设计器里信号与槽的连接方法一:
在主窗体的上面部分,我们可以看到一些小小的按钮,如下图框框部分。用鼠标放在这些按钮上面可以查看这个按钮是什么作用。信号槽连接的按钮也在上面。

点击信号槽连接的按钮如下,如下图①处,点击进入信号槽连接模式(若想退出信号槽连 接模式,则点击①处左边的按钮),进入信号与槽的连接模式后,将鼠标选中我们的“关闭程序” 按钮,按住按钮,然后用鼠标向外拖动,如②处。此时就会出现信号槽连接的符号。

按如下图步骤选择,左边的“关闭程序”
pushButton
按钮的信号,可以看到一个对象的信号可以有多种。右边的 QMainWindow
的槽函数,如果有其他对象,右边不一定只有 MainWidnow 的槽函数(槽),也有可能是其他对象的槽。我们选择按钮的
clicked()
信号,将其连接 MainWindow
对象的
close()
槽。这样就完成了信号与槽的连接,非常简单。我们也可以预知这个信号与槽的功能,当“关闭程序”pushButton
发出了
clicked()
信号(也就是单击信号)。 这个信号由“关闭程序”pushButton
被单击时发出。它就会触发
MainWindow
的
close()
。进而 使整个程序关闭。MainWindow
的
close()
就是退出关闭程序,退出程序的意思。

完成信号槽连接,如下图。要想返回编辑部件模式点击如下图标注位置的按钮。下图就是 信号与槽连接的图示了。在编辑部件模式下我们是看不见的,只有信号槽模式才能看见这样的 图示。

UI
设计器里信号与槽的连接方法二:
选中“关闭程序”
pushButton
按钮,然后右键,如下图。选择“转到槽”。

点击“转到槽”后,弹出下面的窗口,这一步是先让我们选择信号。按如下图选择。我们还发现这个 clicked()
信号并不是
pushButton
的,而是
QAbstactButton
的。只是 pusbButton
继承了
QAbstracButton
,同时把这个信号也继承了下来。除此之外我们还看到其 他信号也是不是属于 pushButton
的,也是被继承下来了。所以我们在
C++
基础部分学过的继承。在 Qt
里的作用表现的淋漓尽致!根本不用重写
pushButton
的
clicked()
事件。
pushButton
只需要 继承父类的 clicked()
事件即可!

点击确认
后,就会跳转到槽函数里,这个代码由
Qt Creator
自动生成。

同时在
mainwindow.h
里声明了这个槽函数。
找到
on_pushButton_clicked
这个槽函数里。在这个槽数里写上 this->close();调用
close()
方法关闭整个程序。

4、编译及运行创建的 UI 项目
关闭程序