新手请教,QT窗口类如何生成两个独立的实体对象?

lostapple 2018-03-20 01:56:47
在QT里定义了一个窗口类:
class PersonDetails : public QWidget

在主窗口里创建
PersonDetails *pd=new PersonDetails(ui->w_right);
QVBoxLayout *rLayout=new QVBoxLayout(ui->w_right);
rLayout->setContentsMargins(9,0,0,0);
rLayout->addWidget(pd);
ui->w_right->setLayout(rLayout);
嵌入到主窗口的右边框架里(用作只读显示)。
然后我想在数据编辑时弹出一个新窗口
PersonDetails *w_pd=new PersonDetails(NULL);
w_pd->setAttribute(Qt::WA_ShowModal,true);
w_pd->show();
但是因为是指针,所以pd和w_pd这两个都指向了同一个对象。
有什么办法可以实现pd和w_pd是同一个类的不同实体呢?
...全文
641 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lostapple 2018-03-24
  • 打赏
  • 举报
回复
问题找到了,低级错误,我在第二个new的页面也连接了相同的槽,导致第二个页面的信号也传送到第一个页面去了。
ooolinux 2018-03-22
  • 打赏
  • 举报
回复
按钮是不是本来应该有?数据没掉有点奇怪。
lostapple 2018-03-22
  • 打赏
  • 举报
回复
引用 3 楼 u010165006 的回复:
new了两次,就是两个对象。 Delphi的窗体,如果从工程属性中去掉自动创建,用来动态创建再Show,创建+Show几次,就有相同的几个窗体吧。
我也是理解new了两次应该是两个独立的对象,第一个PersonDetails *pd=new PersonDetails(ui->w_right);就是图一右边部分,第二个PersonDetails *w_pd=new PersonDetails(NULL);是图二弹出来的窗口。可是你看图二,当w_pd弹窗时,第一个new的pd窗里面跟w_pd内容一样了(看图一,本来pd里面是数据且没有按钮)。 所以才想不通。
ooolinux 2018-03-21
  • 打赏
  • 举报
回复
new了两次,就是两个对象。 Delphi的窗体,如果从工程属性中去掉自动创建,用来动态创建再Show,创建+Show几次,就有相同的几个窗体吧。
lostapple 2018-03-20
  • 打赏
  • 举报
回复
如上图,图一是浏览界面,右边是persondetails,下面隐藏了按钮。 新增记录时我的意图是弹出新的窗口,这个窗口也是persondetails类,但是显示按钮。 虽然弹出的窗口是new出来的,但如图二,右边的那个窗口也跟弹出的窗口一样了(显示了按钮,数据内容也是空的),就是虽然new了两个指针,但是明显指向了同一个对象。这是怎么回事呢? 从delphi转行过来,对类、对象、指针可能理解有偏差,请老司机带路。谢谢!
lostapple 2018-03-20
  • 打赏
  • 举报
回复

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧