1、问题描述
首先,定义MainWindow如下所示:
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
QPushButton btn;
};
然后,在MainWindow的构造函数使用“值引用”的lambda函数,可以对btn按钮进行改动。
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
btn.setText("click");
btn.setParent(this);
[=] () {
btn.setText("don't click");
btn.resize(100, 50);
btn.move(70, 0);
} ();
}
结果如下所示:
怪异的地方在于,此处lambda函数为值引用,为何可以对btn进行修改,且修改成功。
2、实验
带着以上疑问,进行了实验。首先将btn去掉,使其不为MainWindow的一个私有变量,而是使其成为MainWindow构造函数中的局部变量,如下所示:
MainWindow::MainWindo