qt5信號和槽的寫法


qt4以前的寫法是
connect(sender,SIGNAL(signal(parameter...)),receiver,SLOT(slot(parameter...)));
這個寫法在qt5里也支持,但這是個寫法的隱患是連接失敗在編譯期發現不了,只能在運行時在控制台有輸出。
qt5有一種新寫法:
connect(sender, &Sender::signal, receiver, &Receiver::slot);
沒有參數的信號和槽用着很方便,便帶參數的就麻煩了。
后來在用QComboBox時在qt5聯機文檔里看到帶參信號和槽的這樣一種寫法:
connect(comboBox, QOverload<const QString &>::of(&QComboBox::currentIndexChanged),
      [=](const QString &text){ /* ... */ });

第一次看時一頭霧水,這是個什么鬼寫法?和之前的一點也不一樣。
抱着狐疑的態度復制粘貼到自己的工程里試一下,
connect(ui->cbResolution, QOverload<const QString &>::of(&QComboBox::currentIndexChanged),
          [=](const QString &text){
        QMessageBox::warning(this,"Test","current text is "+text);
    });
還真好使。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM