lambda表示式與Qt connect訊號連線的幾種寫法
阿新 • • 發佈:2021-02-08
lambda在c++11以上是支援得好的了。
https://www.cnblogs.com/jimodetiantang/p/9016826.html
Lambda 的語法形式如下:
[函式物件引數] (操作符過載函式引數) mutable 或 exception 宣告 -> 返回值型別 {函式體}
主要比較注意的是“函式物件引數”
- 空。沒有任何函式物件引數。
- =。函式體內可以使用 Lambda 所在範圍內所有可見的區域性變數(包括 Lambda 所在類的 this),並且是值傳遞方式(相
當於編譯器自動為我們按值傳遞了所有區域性變數)。 - &。函式體內可以使用 Lambda 所在範圍內所有可見的區域性變數(包括 Lambda 所在類的 this),並且是引用傳遞方式
- this。函式體內可以使用 Lambda 所在類中的成員變數。
- a。將 a 按值進行傳遞。按值進行傳遞時,函式體內不能修改傳遞進來的 a 的拷貝,因為預設情況下函式是 const 的,要
修改傳遞進來的拷貝,可以新增 mutable 修飾符。 - &a。將 a 按引用進行傳遞。
- a,&b。將 a 按值傳遞,b 按引用進行傳遞。
- =,&a,&b。除 a 和 b 按引用進行傳遞外,其他引數都按值進行傳遞。
- &,a,b。除 a 和 b 按值進行傳遞外,其他引數都按引用進行傳遞
Qt connect有三種比較普通的方式:
https://blog.csdn.net/luoyayun361/article/details/80768567
1。老的Qt4方式
connect(m_pBtn,SIGNAL(sigClicked()),this,SLOT(onClicked()));
connect(m_pBtn,SIGNAL(sigClicked(bool)),this,SLOT(onClicked(bool)));
2。Qt5新方式
connect(m_pBtn,&MyButton::sigClicked,this,&Widget::onClicked);
3。lambda方式
connect(ui->button2, &QPushButton::clicked, [](){qDebug() << "clicked 2";});
多謝,親愛的美美。