初识信号与槽
1.下面使用的手动关联来实现信号与槽
使用的函数connect()
[cpp]
view plain
copy
MainWin.h Class MainWindow :public QMainWindow{ Q_OBJECT ppublic: explicit MainWindow(QWidget *parent = 0); ~MainWindow(){} private slots: void showDialog(); private: MainWindow *ui_; QDialog *dia_; }
[cpp]
view plain
copy
MainWin.cpp MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui_(new MainWindow) { ui_->setupUi(this); connect(ui_->checkBox,SIGNAL(clicked()),this,SLOT(showDialog())); } void MainWindow::showDialog() { dia_ = new QDialog(); dia_->show(); }
简单实现了一个点击来完成打开一个对话窗的效果
2.使用自动关联
不使用connect()函数,但是有前提,这个信号部件是通过Qt设计器来添加的,而不是简单地手工添加。想要通过手工添加,需要再加上一些函数类来完成操作。通过Qt设计器来添加的部件和信号槽,都是使用下面的方法来完成的信号与槽。
[cpp]
view plain
copy
MainWin.h Class MainWindow :public QMainWindow{ Q_OBJECT ppublic: explicit MainWindow(QWidget *parent = 0); ~MainWindow(){} private slots: void on_checkBox_clicked(); private: MainWindow *ui_; QDialog *dia_; }
[cpp]
view plain
copy
MainWin.cpp MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui_(new MainWindow) { ui_->setupUi(this); } void MainWindow::on_checkBox_clicked() { c_ = new QDialog(); c_->show(); }
效果和上面的一样,而且使用更加简单