在使用新式信号槽连接语法时,如果一个信号被重载了,你可以使用QOverload来指定连接到哪个版本的信号。而不需要使用lambda表达式。 例如,假设你有一个重载了两个参数的信号mySignal(int, QString)和一个重载了三个参数的信号mySignal(int, QString, bool)。你可以使用QOverload来连接到带有三个参数的信号版本: 复制 connect(sender, QOverload<int, QString, bool>::of(&Sender::mySignal), receiver, &Receiver::mySlot); 这样就可以连接到你想要的特定版本的信号,而不需要使用lambda表达式。 如果你想连接到重载的第一个版本,你可以使用默认的信号槽连接语法: 复制 connect(sender, &Sender::mySignal, receiver, &Receiver::mySlot);连接重载到第二个版本
时间: 2024-03-20 09:41:13 浏览: 175
如果你想连接到重载的第二个版本,即带有三个参数的信号版本,你可以使用`QOverload`指定连接哪个版本:
```cpp
connect(sender, QOverload<int, QString, bool>::of(&Sender::mySignal), receiver, &Receiver::mySlot);
```
这将连接到带有三个参数的信号版本。如果省略`QOverload`,`connect`将默认连接到第一个重载版本,也就是带有两个参数的版本。
如果你想使用新式信号槽连接语法连接到重载的第一个版本,你可以这样写:
```cpp
connect(sender, &Sender::mySignal, receiver, &Receiver::mySlot);
```
这将连接到带有两个参数的信号版本。
相关问题
在使用新式信号槽连接语法时,如果一个信号被重载了,怎么捕获到指定信号,不用lambda表达式
在使用新式信号槽连接语法时,如果一个信号被重载了,你可以使用`QOverload`来指定连接到哪个版本的信号。而不需要使用lambda表达式。
例如,假设你有一个重载了两个参数的信号`mySignal(int, QString)`和一个重载了三个参数的信号`mySignal(int, QString, bool)`。你可以使用`QOverload`来连接到带有三个参数的信号版本:
```cpp
connect(sender, QOverload<int, QString, bool>::of(&Sender::mySignal), receiver, &Receiver::mySlot);
```
这样就可以连接到你想要的特定版本的信号,而不需要使用lambda表达式。
如果你想连接到重载的第一个版本,你可以使用默认的信号槽连接语法:
```cpp
connect(sender, &Sender::mySignal, receiver, &Receiver::mySlot);
```
这将连接到带有两个参数的信号版本。
阅读全文