前言:
Qt独创的信号槽机制,不仅可以一个信号连接一个槽,而且可以一对多或多对一。
这其中存在两个最基本的问题:
1.一个信号对应多个槽时,槽函数的执行顺序是怎样的???
2.多个信号对应一个槽时,如何在槽函数中判断信号的发出者是谁(来自哪个类的对象)?
下面对这两种情况分别进行验证:
实例演示1:对一个信号对应多个槽时,槽函数的执行顺序怎样的?
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_pushButton_clicked();
void myslot1(QString); //定义私有槽
void myslot2(QString); //定义私有槽
void myslot3(QString); //定义私有槽
private:
Ui::MainWindow *ui;
};
//公有继承自 QObject
class MyClass : public QObject
{
Q_OBJECT //声明宏,为了可以使用信号槽机制
public:
MyClass(){
}
~MyClass(){
}
signals:
void mysignal(QString); //定义信号(信号全部是公有的)
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#