正常的函数调用一样。只有当所有的槽返回以后发射函数(emit)才返回。只有定义了这
个信号的类及其派生类才能够发射这个信号。只有当所有的槽返回以后发射函数( emit)
才返回。
信号发射:
(1) Qt 的窗口部件预定义的信号
这种情况下,点击窗口部件就可以发射信号,并调用相应的槽函数。
例:connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(show_hello_world()));
此时只需点击 Button 既可以发射信号,调用 show_hello_world()槽函数。
(2) 通过继承我们自己加入的信号:
这时候就要用 emit 才能发射信号,然后调用所连接的槽函数。
例:
class hello::public 类名
{
signals:
void ShowHelloSuccess( );
public slots:
void recv_success();
void showhello();
}
在构造函数中:
Connect(this,SIGNAL(ShowHelloSuccess()),this,SLOT(recv_success());
Showhello()的实现
Void hello:: showhello()
{
ui->lineEdit->setText("hello world");
emit show_success(); //emit 发射信号。
}
二、用 QT 实现计算器
了解信号和槽机制后,就有能力实现计算器。实现计算器其实很简单,紧紧抓住信号和
槽这个联系便能够实现。
首先要明白,发一个信号,比如数字键,然后要调用一个槽函数,槽函数对传过来的数
字进行处理。这里就有一个数字拼接的问题(具体看函数再做解释)。既然点一个按键,
就要发射一个信号,然后对应的槽函数接收到数字,并对接收到的数字进行处理。那边新
建个带参数的信号,来传递数字。用 Qt 的窗口部件预定义的信号来调用一个槽函数,该槽
函数里发射带参数的信号。该信号再调用处理数字的槽函数。