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; };
标签:Qt5,Qt,ui,connect,信号,slots,写法 From: https://www.cnblogs.com/shiyixirui/p/17400428.html