Qt信号和槽的两种类型
来源:互联网 发布:ubuntu 22端口被拒绝 编辑:程序博客网 时间:2024/06/05 20:28
信号和槽机制
Signal&Slot 信号和槽机制用于两个对象的通信。在GUI编程中,总希望一个部件的变化其他的部件也能够了解到。这就是说,我们希望任何对象都可以和其他的对象进行通信。当一个特殊的事情发生时便可以发射一个信号,比如按钮被单击;而槽就是一个函数,他在信号发射后被用来响应这个信号。一个信号可以关联到多个槽上,多个信号也可以关联到同一个槽上,甚至,一个信号还可以关联到另一个信号上。
下面介绍两种不同的方法实现信号和槽的关联:
1.信号和槽的手动关联:
signals:
void dlgReturn(int);//自定义的信号
声明信号要用signals:关键字。同时信号没有返回值,只能是void类型的。因为只有QObject类及其子类才能使用槽机制,QDialog继承自QWidget,而QWidget又继承
自QObject;
在ui界面上添加一个spin box部件和push button部件
然后转到push button的clicked的槽上void MyDialog::on_pushButton_clicked(){
int value=ui->spinBox->value();//获取输入的数值emit dlgReturn(value); //发射信号close(); //关闭对话框}
同时定义一个slots:
private slots:void showValue(int value);
在Widget构造函数上关联信号和槽
MyDialog *dlg=new MyDialog(this);connect(dlg,SIGNAL(dlgReturn(int)),this,SLOT(showValue(int)));dlg->show();定义函数
void Widget::showValue(int value){
ui->label->setText(tr("获取的值是:%1").arg(value));}
运行程序,单击button按钮之后,会获取spin box的值同时使用自定义的信号将其作为参数发送出去。发射一个信号要用emit关键字。这就完成了信号和槽的关联
2.信号和槽的自动关联
声明一个private slots:
void on_myButton_clicked();
这里自定义了一个槽,他使用自动关联。然后在cpp文件中添加QPushButton头文件
在构造函数中添加
QPushButton *button=new QPushButton(this); //创建按钮
button->setObjectNmae("my Buttton");//指定函数的对象名
ui->setupUi(this); //要在定义了部件以后在调用这个函数
void Widget::on_myButton_clicked()
{
close();
}
这样就使用了自动关联了
阅读全文
1 0
- Qt信号和槽的两种类型
- QT的信号和信号槽
- QT的信号和槽
- Qt的信号和槽
- QT的信号和槽
- QT的信号和槽
- QT的信号和槽
- QT的信号和槽
- QT的信号和槽
- Verilog 中定义信号为什么要区分 wire 和 reg 两种类型?
- Qt信号和槽
- QT信号和槽
- QT信号和槽
- QT 信号和槽
- Qt ---- 信号和槽
- QT信号和槽
- QT--信号和槽
- QT 信号和槽
- floyd算法和动态规划的关系
- Linux系统服务器上安装Apache
- 链表中倒数第k个结点
- 隐马尔模型----五:python实现
- 使用eclipse工具搭建一个简单的Spring boot。
- Qt信号和槽的两种类型
- 使用openssl库实现RSA、AES数据加密
- github怎么使用
- Sql server中EXCEL导入到数据库中,出现失败
- BZOJ 2351 [BeiJing 2011] 字符串Hash 解题报告
- JVM高级特性与实践(十四):线程安全 与 锁优化
- 基于MUI框架的HTML5+的二维码扫描实现
- MapReduce生成HFile文件,再使用BulkLoad导入HBase中(完全分布式运行)
- STL容器学习