Qt信号槽

Qt 信号槽
  Qt的信号槽,除了使用信号连接槽,还可以信号连接信号,断开信号,发送(转发)信号。
  一个信号可以连接一个槽,也可以一个信号连接多个槽,还可以多个信号连接一个槽。
 
复制代码
// 信号连接槽
connect(发送者,信号,接受者,槽);

// 信号连接信号
connect(发送者,信号,接受者,信号);

// 断开信号连接
disconnect(发送者,信号,接受者,信号|槽);

// 发送信号
emit 信号();
复制代码

 

 

信号槽的写法有Qt4版本和Qt5版本,两种写法。
主要是看个人习惯,一般我的习惯是,简单的槽函数就用Qt5写法加lambda来写,复杂的槽函数就用Qt4写法来写。
 
复制代码
/* 按钮,信号不带参数*/
// Qt4 写法
connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(my_slots_1()));
// Qt5 写法一
connect(ui.pushButton, &QPushButton::clicked, this, [=]() {QMessageBox::information(this, "123", "123"); });
// Qt5 写法二
connect(ui.pushButton, &QPushButton::clicked, this, &MyWidget::my_slots_1);
// Qt5 写法三,调用QWidget自带的槽函数
connect(ui.pushButton, &QPushButton::clicked, this, &MyWidget::close);


/* 下拉框,信号带参数 */
// Qt4 写法
connect(ui.comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(my_slots_2(int)));
// Qt5 写法
connect(ui.comboBox, QOverload<int>::of(&QComboBox::currentIndexChanged), this, [=](int index) {QMessageBox::information(this, "123", "123"); });
复制代码

 

 

 

自定义信号与槽(signals、slots)
复制代码
class MyWidget : public QDialog
{
    Q_OBJECT

public:
    MyWidget(QWidget *parent = nullptr);
    ~MyWidget();

signals:
    void my_signals_1();        // 自定义信号

public slots:
    void my_slots_1();          // 自定义槽函数1
    void my_slots_2(int);       // 自定义槽函数2

private:
    Ui::QtWidgetsApplication1Class ui;
};
复制代码

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @   十一的杂文录  阅读(59)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2020-05-14 Jenkins安装插件很慢的解决方法
2020-05-14 Jenkins首次启动慢
2020-05-14 Jenkins安装
2020-05-14 pip提示升级pip版本
2020-05-14 Python从 requirements.txt 安装库
2020-05-14 Python将依赖包导出到requirements.txt文件
2020-05-14 Python实现将网站域名解析为ip地址
点击右上角即可分享
微信分享提示