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);
});
還真好使。