QT的信号和槽
in 默认分类 with 0 comment

正在学习中 记录一下

信号和槽的绑定方式

// 方式1:传统宏语法(Qt4风格)
// - 优点:兼容旧版Qt,支持信号与槽名称的字符串匹配
// - 缺点:不支持编译时类型检查,信号/槽名称拼写错误可能导致运行时崩溃
// - 适用场景:需要兼容Qt4代码或动态连接的场景
connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(ButtonClick()));

// 方式2:函数指针语法(Qt5+推荐)
// - 优点:编译时类型检查,安全性高;支持自动补全和IDE跳转
// - 缺点:需要明确指定函数指针类型,不支持信号与槽名称的动态解析
// - 适用场景:现代Qt开发的首选方式,尤其是复杂信号参数的场景
connect(ui.pushButton, &QPushButton::clicked, this, &QtWidgetsApplication1::ButtonClick);

// 方式3:Lambda表达式语法(C++11+)
// - 优点:无需单独定义槽函数,适合实现简单逻辑;可捕获外部变量
// - 缺点:逻辑复杂时Lambda会变得冗长,降低代码可读性
// - 适用场景:简单的单次响应逻辑,如显示对话框、更新局部UI等
connect(ui.pushButton, &QPushButton::clicked, this, [this]() {
    QMessageBox::information(this, "提示", "点击成功!");
});