一个小程序需要用layout->addWidget()的方式动态添加widget,最开始用如下代码,widget却死活不显示:
QPushButton b;
b.setText("Hello from b");
layout->addWidget(&b);
经过半天时间的摸索,终于发现了一种能行的方法:
QPushButton *pb = new QPushButton;
pb->setText("Hello from pb");
layout->addWidget(pb);
根据我(菜鸟一个)对C++理解,这两种调用方式传递指针参数本质上不应该是一样的吗?
为什么一种方式能行,另一种方式行不通呢?
这里是用来对比的代码:
QVBoxLayout *layout = new QVBoxLayout(ui->tab);
QPushButton *pb = new QPushButton;
pb->setText("Hello from pb");
QPushButton b;
b.setText("Hello from b");
layout->addWidget(pb);
layout->addWidget(&b);
运行截图:
可以看到其中只有用new创建出来的widget添加成功了。