QT 建立信号和槽的联系(事件处理)

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表示失败。

通过以上步奏就可以建立信号和槽的连接。

原文地址:https://www.cnblogs.com/fuhang/p/9888273.html