Qt 5 当类的信号函数和成员函数,函数名相同时,连接信号和槽的写法。

前言:因为项目需要,软件要在windows7上运行,然后项目目前是qt6写的,然后搜索资料,需要qt5.15.2或之前的版本才能在win7上运行,于是下载了qt5.15.2,将qt6的代码在qt5编译时,很多错误,一些莫名其妙的错,比如函数没有定义的错误,此时需要将头文件和源文件的编码格式改成GB2312才行;有些qt6新增的函数得改成qt5中有的函数。因为用到蓝牙,所以写了个蓝牙管理器类,发现连接信号和槽时,提示参数不一致错误,仔细看了api,才发现成员函数名和信号函数名一样,导致原来的那种连接方式会报错,后来换了一种写法才行,以此记录修改过程。

连接信号和槽的两种写法

1)简写法,适合信号函数和成员函数,函数名不会相同的情形。

// 示例,QBluetoothDeviceDiscoveryAgent类中,成员函数error()和信号函数error(QBluetoothDeviceDiscoveryAgent::Error),函数名一样,此种写法编译(vs2019编译)报错
connect(m_deviceDiscoveryAgentPtr, &QBluetoothDeviceDiscoveryAgent::error,
    this, &BleClientManager::onDeviceDiscoveryErrorOccurred); //设备发现出现错误,因为信号函数和成员函数的函数名一样,无法这样写

2)注明信号函数和槽函数参数的写法,对于信号函数和槽函数,函数名相同时,也适用。

connect(m_deviceDiscoveryAgentPtr, SIGNAL(error(QBluetoothDeviceDiscoveryAgent::Error)),
            this, SLOT(onDeviceDiscoveryErrorOccurred(QBluetoothDeviceDiscoveryAgent::Error))); //设备发现出现错误

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt中,可以通过信号机制连接Groupbox的函数,具体步骤如下: 1. 在Groupbox所在的页面的头文件中,声明一个函数。例如,声明一个为`onGroupBoxClicked()`的函数。 ```cpp private slots: void onGroupBoxClicked(); ``` 2. 在页面的源文件中,实现函数的功能。 ```cpp void YourPage::onGroupBoxClicked() { // 处理Groupbox被点击后的逻辑 } ``` 3. 在页面的构造函数或其他适当的位置,使用`connect()`函数将Groupbox的`clicked()`信号函数进行连接。 ```cpp connect(ui->yourGroupBox, SIGNAL(clicked()), this, SLOT(onGroupBoxClicked())); ``` 在上述代码中,`ui->yourGroupBox`是你的Groupbox对象的指针。 4. 确保在你的Groupbox对象上启用了鼠标点击事件。可以在Qt Designer中或者在代码中设置`setCheckable(true)`和`setAutoExclusive(false)`。 ```cpp ui->yourGroupBox->setCheckable(true); // 启用点击事件 ui->yourGroupBox->setAutoExclusive(false); // 允许取消选择 ``` 这样,当Groupbox被点击,与之相关联的函数将会被调用。 需要注意的是,如果你在Qt Designer中使用了自动生成的代码,那么Groupbox的点击事件已经默认与一个函数连接了,通常是为`on_groupBox_clicked()`的函数。你可以在该函数中添加自己的逻辑,或者重命函数并在步骤3中进行连接。 希望以上步骤能够帮助你在Qt中通过信号机制连接Groupbox的函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值