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