lambda表达式qt
时间: 2023-11-27 21:48:17 浏览: 93
Lambda表达式是C++11引入的一种匿名函数,它可以像普通函数一样接受参数,也可以像变量一样被传递和使用。在Qt中,Lambda表达式可以用于信号和槽的连接,以及STL算法等场景中。
下面是一个使用Lambda表达式连接信号和槽的例子:
```cpp
QPushButton *button = new QPushButton("Click me");
connect(button, &QPushButton::clicked, [](){
qDebug() << "Button clicked";
});
```
上述代码中,Lambda表达式被用作槽函数,当按钮被点击时,Lambda表达式中的代码将被执行。
Lambda表达式的语法如下:
```cpp
[capture list](parameters) -> return type { function body }
```
其中,capture list用于捕获外部变量,parameters用于指定参数列表,return type用于指定返回值类型,function body用于指定函数体。
下面是一个使用Lambda表达式进行排序的例子:
```cpp
QVector<int> vec = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
qSort(vec.begin(), vec.end(), [](int a, int b){
return a < b;
});
qDebug() << vec; // 输出:QVector(1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9)
```
上述代码中,Lambda表达式被用作排序函数,它接受两个int类型的参数a和b,并返回a是否小于b的bool值。
阅读全文