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; };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源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地址