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