Qt中事件处理机制叫做“信号”和“槽”signal &slot.
其模型为:
对象a中有一个信号signal:XXX(代表一个事件)
对象b中有一个槽slot:YYY(事件处理函数)
用conect 把他们连接起来:
connect(&a,XXX,&b,YYY)
当a中事件发生时,b中的处理函数就会被调用。
实例:
在ui界面添加点击按钮和一个label,实现当点击按钮时,label显示“helloworld”.
1.新建一个gui工程,在ui中添加控件pushbutton和label,pushbutton为对象a.
2.右键pushbutton,选择go to slot...选项,进入select signal 界面可以查看pushbutton的信号处理函数,这里选择第二个clicked(bool)作为pushbutton的signal。
3.定义一个处理函数,参数类型和signal的参数相同。
在头文件中:
private slots: int show(bool check);
在cpp文件中:
int MainWindow::show(bool check) { cout<<"helloword"<<endl; }
4.将对象a的signal和b对象的slot给连接起来。
connect(ui.pushButton,SIGNAL(click(bool)),this,SLOT(show(bool)));
这里注意SIGNAL和SLOT要大写,click()和show()中的参数类型要相同,且只写数据类型,不需要变量。
如何测试是否连接成功?
connect函数输出的是bool类型值,如果为true表示连接成功,false表示失败。
通过以上步奏就可以建立信号和槽的连接。