• 4260阅读
  • 4回复

初学Qt,请教一个很简单的问题. [复制链接]

上一主题 下一主题
离线cipher1981
 
只看楼主 倒序阅读 楼主  发表于: 2009-09-25
以前是Java程序员 第一次接触C++/Qt  希望能得到大家的帮助
请问下面2段代码的区别是什么?

第一段:
  1. QPushButton button("Quit");
  2. button.show();


第二段:
  1. QPushButton *button = new QPushButton("Quit");
  2. button->show();


我知道第2个应该是指针  呵呵 第一个是什么呢? 是直接创建了一个QPushButton对象?
那么什么时候应该用指针创建某种QWidget? 什么时候用第一种方式创建?
2种方式的主要区别在哪里?
非常感谢!
离线dbzhang800

只看该作者 1楼 发表于: 2009-09-25
这个是C++ 的问题。
内存分配方式不同。
自己用new申请的内存,必须要用delete 释放,不然就造成内存泄露

不过Qt 中的类都提供 parent参数,对象通过父子关系基本可以自动处理这个问题。所以使用起来区别不太大
离线cipher1981
只看该作者 2楼 发表于: 2009-09-25
谢谢!
感觉C++比Java要复杂不少 呵呵

很多* 和 &  现在还没搞清楚什么意思
是不是调用直接创建的对象时 前面要加 & ?

比如前面第一种 在连接信号的槽的时候就要这样写
QObject::connect(&quit, SIGNAL(clicked()), &app, SLOT(quit()));

而第二种 用new创建的指针对象就不须要:
QObject::connect(button, SIGNAL(clicked()), &app, SLOT(quit()));


那么哪种创建QWidget的方式相对来说更合理 或者说哪种方式最常用呢?
离线dbzhang800

只看该作者 3楼 发表于: 2009-09-25
似乎后者更常用一些
离线cipher1981
只看该作者 4楼 发表于: 2009-09-25
恩 好的 再次感谢!

初学问问多多 不明之处 以后还要请教 呵呵
快速回复
限100 字节
 
上一个 下一个