QT 訊號和槽的關聯和斷開
阿新 • • 發佈:2018-11-09
#include "widget.h" #include "ui_widget.h" #include "mydialog.h" Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); MyDialog* dlg =new MyDialog(this); //連線方式 connect(dlg, &MyDialog::dlgReturn,this,&Widget::showValue); connect(dlg,SIGNAL(dlgReturn(int)),this,SLOT(showValue(int))); QMetaObject::Connection myConnection=connect(dlg,&MyDialog::dlgReturn,[=](int value){ ui->label->setText(tr("獲取的值是:%1").arg(value)); }); //斷開方式 // 斷開與一個物件所有訊號的所有關聯 disconnect(dlg,0,0,0,0); // 和上面功能一樣 dlg->disconnect(); // 斷開與一個指定訊號的所有關聯 disconnect(dlg,SIGNAL(dlgReturn(int)),0,0); // 和上面功能一樣 dlg->disconnect(SIGNAL(dlgReturn(int))); // 斷開與一個指定的receiver的所有關聯 disconnect(dlg,0,this,0); dlg->disconnect(this); // 斷開一個指定訊號和槽的關聯 disconnect(dlg,SIGNAL(dlgReturn(int)),this,SLOT(showValue(int))); dlg->disconnect(SIGNAL(dlgReturn(int)),this,SLOT(showValue(int))); disconnect(myConnection); dlg->show(); } Widget::~Widget() { delete ui; } void Widget::showValue(int value) { ui->label->setText(tr("獲取的值是:%1").arg(value)); }