c++编写qt时,connect有几种写法
时间: 2024-03-13 10:42:25 浏览: 103
在 Qt 中,`connect` 函数是用于将信号和槽进行连接的重要函数。`connect` 函数的常用写法有以下几种:
1. 使用函数指针作为槽函数:
```
connect(sender, SIGNAL(signal()), receiver, SLOT(slot()));
```
这是 `connect` 函数最早的写法,其中 `sender` 发送信号,`receiver` 接收信号。`signal()` 是 `sender` 发送的信号,`slot()` 是 `receiver` 对应的槽函数。使用函数指针的方式在 C++11 之后已经被废弃,不推荐使用。
2. 使用函数指针作为槽函数的新写法:
```
connect(sender, &Sender::signal, receiver, &Receiver::slot);
```
这是现代 C++ 语法的写法,使用了函数指针。其中 `Sender::signal` 是 `sender` 发送的信号,`Receiver::slot` 是 `receiver` 对应的槽函数。这种写法可以通过编译器进行类型检查,更加安全。
3. 使用 lambda 表达式作为槽函数:
```
connect(sender, &Sender::signal, [=]() {
// lambda 表达式内容
});
```
这是 Qt5 之后引入的写法,使用了 lambda 表达式作为槽函数。其中 `Sender::signal` 是 `sender` 发送的信号,`[=]` 表示捕获所有外部变量并复制到 lambda 表达式中。在 lambda 表达式中可以编写任何想要执行的代码,这种写法非常灵活。
总的来说,以上三种写法都可以实现信号和槽的连接,不同的写法适用于不同的场景。建议使用现代 C++ 语法和 lambda 表达式,以获得更好的可读性和类型安全性。
阅读全文