qt 中connect 拉姆达表达式的使用
时间: 2024-10-22 21:17:12 浏览: 26
拉姆达表达式C#的新特性
4星 · 用户满意度95%
在Qt框架中,`connect()`函数主要用于连接信号(Signal)和槽(Slot)。当你想让某个事件发生时,触发另一个函数的执行,就可以使用`connect()`. 当信号发出时,如果指定了拉姆达表达式(Lambda Expression),那么你可以直接在`connect()`中定义响应函数,而无需提前声明一个独立的函数。
例如,假设你有一个按钮(QPushButton)和一个显示文本的QLineEdit,你想在按钮点击后更新QLineEdit的内容,可以这样做:
```cpp
QPushButton *button = new QPushButton("Click me", QWidget());
QLineEdit *lineEdit = new QLineEdit(QWidget());
// 使用拉姆达表达式作为槽函数
QObject::connect(button, &QPushButton::clicked, [lineEdit](bool checked) {
lineEdit->setText("Button clicked!");
});
```
在这里,`&QPushButton::clicked`是指向QPushButton的click信号,`[lineEdit](bool checked)`是一个拉姆达表达式,它接受一个布尔值(一般表示按钮是否被点击了),并在其中设置QLineEdit的内容。
阅读全文