在c++qt中遇到一个关于lambda引用捕获的问题;下面的QtWidgetsApplication1函数是析构函数,所属的类是创建窗口的类
在我建立的这个链接中用到lambda的引用捕获,我试图对新窗口w2和按钮btn进行引用,结果会报错访问冲突;
QtWidgetsApplication1::QtWidgetsApplication1(QWidget* parent)
: QMainWindow(parent)
{
MyPushButton* btn = new MyPushButton(this);
NewWidget* w2 = new NewWidget;
btn->setText("按钮");
connect(btn, &MyPushButton::clicked, [&]() {
if (btn->text() == "按钮")
{
w2->show();
btn->setText("消解");
}
else
{
w2->close();
btn->setText("按钮");
}
});
}
但当我不用lambda建立引用,直接在该函数中建立引用新窗口和按钮进行修改时,程序正常运行,这是为什么呢
QtWidgetsApplication1::QtWidgetsApplication1(QWidget* parent)
: QMainWindow(parent)
{
MyPushButton* btn = new MyPushButton(this);
NewWidget* w2 = new NewWidget;
btn->setText("按钮");
MyPushButton*& p = btn;
p->setText("修改后的按钮");
}