【发布时间】:2014-08-13 06:20:07
【问题描述】:
我尝试使用 Qt 5.3 编写程序,并尝试使用信号和插槽作为练习。我写了以下代码(部分代码):
void exitToWin()
{
exit(0);
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
QMessageBox EndBox;
QObject::connect((EndBox.button(QMessageBox::Ok)),SIGNAL(clicked()),exitToWin);
w.show();
EndBox.show();
return a.exec();
}
我什至将函数的声明更改为static,并在编写connect 命令时检查了带括号和不带括号的表达式。但是尽管 Qt 记录了什么以及它的 IDE 引导了什么。我还阅读了here 并对其进行了测试。
此外,我尝试使用 lambda 表达式如下:
QObject::connect((EndBox.button(QMessageBox::Ok)),SIGNAL(clicked()),[=](){
exit(0);
});
但我仍然收到错误提示“没有匹配的函数调用”。
毕竟我不得不说我使用的是 Microsoft Windows 7。
【问题讨论】:
-
您是否尝试过重写该没有信号声明的情况,如下所示:woboq.com/blog/cpp11-in-qt5.html?
-
@Tanuki 是的!我以前读过。
标签: c++ qt lambda signals-slots qt5.3