1. 程式人生 > 其它 >lambda表示式與Qt connect訊號連線的幾種寫法

lambda表示式與Qt connect訊號連線的幾種寫法

技術標籤:Qt5重走學習之路Qtconnect

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";});

多謝,親愛的美美。