本文章主要介绍如何连接一个继承自基类并且在基类函数中发射的信号, 并且保证只有该子类才会发射这个信号.
其中心思想是: 必须把该子类指针转换为基类指针,然后用该指针调用基类中的函数来触发信号, 或者通过信号槽机制直接把基类信号(放在槽位置)与另一个信号相连. 这样之后连接到该子类(其他子类不行)的槽(属于其他类)就可以收到该基类中的信号, 从而触发槽函数.
函数代码如下:
.h 文件:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class A: public QObject
{
Q_OBJECT
public:
void toClear();
signals:
void clear();
};
class B: public A
{
Q_OBJECT
};
class C: public A
{
Q_OBJECT
};
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
public slots:
void callToClear();
private:
Ui::MainWindow *ui;
B *b;
C *c;
};
#endif // M
Qt信号与槽补充 - 在基类函数中发射的信号
最新推荐文章于 2024-05-30 18:50:26 发布
本文详细阐述了如何在Qt中处理基类信号与子类槽函数的交互,确保只有特定子类能发射并处理基类的信号。通过将子类指针转换为基类指针,可以实现从基类函数发射信号,并与其他类的槽进行连接,从而在触发信号时执行相应的槽函数。
摘要由CSDN通过智能技术生成