• 2000阅读
  • 2回复

[提问]一個傳遞指針參數的疑問 [复制链接]

上一主题 下一主题
离线佐進0307
 

只看楼主 倒序阅读 楼主  发表于: 2018-09-02
一个小程序需要用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添加成功了。
离线yysr

只看该作者 1楼 发表于: 2018-09-02
QPushButton b;
定义了一个局部变量,函数结束,局部变量生命周期结束了
离线佐進0307

只看该作者 2楼 发表于: 2018-09-02
回 yysr 的帖子
yysr:QPushButton b;
定义了一个局部变量,函数结束,局部变量生命周期结束了 (2018-09-02 21:45) 

太感謝了,自己實在是太菜了。。
快速回复
限100 字节
 
上一个 下一个