什么是信号和槽
信号
信号指的就是控件发出的特定的信号。
例如按键的信号:
槽
槽的意思就是槽函数,可以将槽函数绑定在某个控件的信号上,当这个控件发出这个信号的时候,就会触发这个槽函数(与中断类似)。
如何将信号和槽关联起来
自动关联
右键控件 -> 点击“转到槽” -> 选择其中一个信号 -> 系统会自动在widget.h中添加以下内容:
(槽函数只能声明到 private slots 或者 public 下面)
并且会在widget.cpp里面实现这个槽函数:
(实现的效果就是按一下此按键则会打印一次“hello”)
手动关联
手动关联需要使用connect函数:
点击查看代码
connect(ui->pushButton_2,SIGNAL(clicked()),this,SLOT(on_pushButton_2_clicked()));
简化:connect(A,SIGNAL(B),C,SLOT(D));
解释:当对象A发出B信号时,就会触发对象C的槽函数D
再增加对应的槽函数:
点击查看代码
void Widget::on_pushButton_2_clicked()
{qDebug("world");
}
不要忘了在widget.h文件中添加声明:
点击查看代码
class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();private slots:void on_pushButton_2_clicked(); //添加声明
private:Ui::Widget *ui;
};
ps. 为了方便分析程序,最好给控件修改为合适的名称,尽量通俗易懂。