在Qt开发里面,有一种传说中的信号槽机制,有好几种实现的方法。 为了实现ui和逻辑的解耦,Qt开发可以利用Qt designer来做UI,同时也有一些UI和逻辑函数之间的通讯建立。
例如,要实现button的相应,有下面几种方法:
- 可以在<编辑信号/槽>模式下面,自己定义信号和槽函数,然后在窗口类里面,把相应的槽函数定义好
- 可以纯代码实现。把ui的控件拖动好,把槽函数写好,然后用一句
connect(...)
就可以把信号(例如click)和槽(例如void ButtonClicked()
) 链接起来。实际上,Qt designer做的也就是在初始化的时候把这个connect自动实现了,不需要开发者去敲。 - 可以利用一些默认的函数。例如,一个pushButton叫nextButt,那么Qt系统提供click,press等信号,然后只要在窗口类里面,定义如
private slot:
on_nextButt_clicked();
//或者
on_nextButt_pressed();
这样子的槽函数,就相当于重写Qt提供的默认槽函数,同样可以把按钮相应做出来。
!! 注意一点,连接了多少次,槽函数就会相应多少次。 所以如果把上述1 2 3都做一遍,槽函数就会执行三次。。呵呵。。就是这么任性。。