Qt教程-Qt Creator中定制GUI程序(添加多界面)

这一节我们将为之前创建的MainWindow工程添加第二个界面实现多窗口的演示。
首先打开之前的MainWindow工程,然后选择新建一个界面类。
如下图所示:

之后我们可以选择一个 Dialog 界面模板,Dialog 界面和之前创建的 MainWindow 有一点区别,默认是不会生成菜单栏,工具栏,状态栏这些的,一般 Dialog 界面用来做二级窗口。

选择以后我们继续下一步。

选择好类名,继续下一步。

最后完成创建。
之后我们打开 aboutdialog.ui 就可以对第二个界面进行设计了。

这里我们使用了 QLabel 控件,QLabel 的功能就是显示文字或者图片,使用起来非常的简单。
接着我们回到mainwindow.ui的设计界面,为之前创建的关于菜单添加一个处理函数。

这里我们选择 triggered 信号,triggered 信号和 clicked 有点像,不同的是 clicked 只能在被点击时触发,而 triggered 不仅可以被点击触发还可以被快捷键等方式触发。点击 OK 后 Qt Creator 会帮我们创建这么一个槽函数。
如下图所示:

我们写好槽函数之后,直接编译运行然后点击菜单后就可以看到效果。
那么问题来了,我们并没有看到 connect 函数把槽和信号连接起来,为什么最后却执行成功了呢?
我们可以看到 moc 处理完成的 .h 文件中最后调用了 QMetaObject::connectSlotsByName 函数将自动连接符合on_object名字_信号名()这样名字的槽函数。
举个例子,ui里面加一个按钮,按钮的object名字定位为 pushButton, 然后我们定义一个槽,叫 void on_pushButton_clicked();这样这个槽函数将会被自动连接。
最后我们编译运行后可以点击菜单查看效果,效果如下图所示。