對於Qt 訊號的繫結,有幾種方式:
1. 標準的SIGNAL和SLOT的繫結方式; 例如:
connect(qApp, SIGNAL(focusChanged(QWidget *, QWidget *)), this, SLOT(focusChanged(QWidget *, QWidget *))); // qApp 為傳送者, this類為接收者; focusChanged為傳送者傳送的訊號, focusChanged為接收者繫結的槽函式
2. 透過類名::函式的方式進行繫結, 例如:
connect(&SigForward::Get(), &SigForward::sigSwitchInputLanguage, this, &Keyboard::switchLanguage); // SigForward::Get()為單例類,非指標物件,如果是指標,則不需&; 不一定需要單例類,看自己使用場景,第一個引數是地址; // SigForward::sigSwitchInputLanguage為方法;注意: 這引數中&是必須要加; // this為接收物件, 也為地址; // Keyboard::switchLanguage為this類中的槽函式; 注意:這引數中&是必須要加;
3. 使用lamda表示式, 例如:
connect(m_pBtnStopQA, &QPushButton::clicked, [=](){ }); // [=] 為this類, ()裡面的引數為跟clicked裡面一樣; {}內實現是業務操作