qt信号重载了怎么用新式表达式表示取哪一个信号
时间: 2024-03-20 09:41:06 浏览: 186
在使用新式信号槽连接语法时,如果一个信号被重载了,你可以使用函数指针或lambda表达式来指定连接到哪个版本的信号。
假设你有一个重载了两个参数的信号`mySignal(int, QString)`和一个重载了三个参数的信号`mySignal(int, QString, bool)`。你可以这样连接到带有三个参数的信号版本:
```cpp
connect(sender, QOverload<int, QString, bool>::of(&Sender::mySignal), receiver, &Receiver::mySlot);
```
或者,你可以使用lambda表达式:
```cpp
connect(sender, QOverload<int, QString, bool>::of(&Sender::mySignal), receiver, [this](int i, QString s, bool b) {
this->mySlot(i, s, b);
});
```
在lambda表达式中,你可以调用你想要连接的特定版本的槽函数。注意,lambda表达式的参数必须与信号的参数类型和数量匹配。
如果你想连接到重载的第一个版本,也可以使用函数指针或lambda表达式:
```cpp
connect(sender, &Sender::mySignal, receiver, &Receiver::mySlot);
```
或者:
```cpp
connect(sender, &Sender::mySignal, receiver, [this](int i, QString s) {
this->mySlot(i, s);
});
```
这将连接到带有两个参数的信号版本。
阅读全文
相关推荐
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)