欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

QT5槽函数有重载情况下连接信号与槽

程序员文章站 2024-01-02 21:24:58
...

QT5槽函数有重载情况下连接信号与槽

方法1:使用QT4连接信号与槽的方式

使用Qt4方式连接信号和槽,槽函数必须在private slots中声明。
Qt4方式连接信号和槽,函数名连接(可带参数):

connect(btn,SIGNAL(clicked()),this,SLOT(On_btn_Clicked()));

SIGNAL()和SLOT()是Qt定义的两个宏,其返回值为C语言格式的字符串(const char*),因此采用以下的连接效果是等同的:

connect(btn,"clicked()",this,"On_btn_Clicked()");

在 Qt 4 中使用SIGNAL和SLOT两个宏来连接信号槽,这在QT5中也是支持的。如果有一个带有两个参数的信号,由于其信号槽的连接是带参数的,所以connect()函数使用Qt4的风格编写是没有问题。

方法2:使用类成员(非静态)函数指针

Qt5连接信号和槽新方法,函数地址连接:

connect(btn,&QPushButton::clicked,this,&Widget::On_btn_Clicked);

由于信号可重载(可以带不同参数),这种情况下会默认连接参数列表相同的信号与槽
如果希望相同的信号的情况下,连接重载过的槽函数,则需通过类成员函数指针指向槽函数的目标重载。
类成员函数指针在声明时需要添加类名

void (Widget::*pf)();
//返回值类型 (类名::*pf)(参数类型列表);
pf = &Widget::On_btn_Clicked;
connect(btn,&QPushButton::clicked,this,pf);

上一篇:

下一篇: