• 15678阅读
  • 6回复

【提问】QWidget的close()和hide()有什么区别? [复制链接]

上一主题 下一主题
离线lj_0212
 

只看楼主 倒序阅读 楼主  发表于: 2006-03-02
如题。

根据文档,调用close()时,也是将部件隐藏。实际写代码测试,也是如此。
在写多窗口程序时,当前不显示的部件只调用close()就可以了么?

有哪位兄弟有这方面经验,还望赐教!
离线zccmin
只看该作者 1楼 发表于: 2006-03-02
实际上区别还是很大的。如果有个组件,你先隐藏,然后在需要显示。你就会发现区别了。
如果用的hide(),你只要再用show()就能显示。可是用的close(),则必须重新生成该对象。
离线lj_0212

只看该作者 2楼 发表于: 2006-03-02
先感谢一下!
我马上测试一下。

再问几个问题?
那是否意味着已经不需要显示的窗口部件只调用一下close()就可以了?这样不会占用内存空间么?不会因为这样做造成溢出吧?
在线XChinux

只看该作者 3楼 发表于: 2006-03-02
Qt Reference中说的:
bool QWidget::close () [slot]
Closes this widget. Returns true if the widget was closed; otherwise returns false.
First it sends the widget a QCloseEvent. The widget is hidden if it accepts the close event. If it ignores the event, nothing happens. The default implementation of QWidget::closeEvent() accepts the close event.
If the widget has the Qt::WA_DeleteOnClose flag, the widget is also deleted. A close events is delivered to the widget no matter if the widget is visible or not.
The QApplication::lastWindowClosed() signal is emitted when the last visible primary window (i.e. window with no parent) with the Qt::WA_QuitOnClose attribute set is closed. By default this attribute is set for all widgets except transient windows such as splash screens, tool windows, and popup menus.
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线lj_0212

只看该作者 4楼 发表于: 2006-03-02
这是4.X的文档吧,Qt::WA_DeleteOnClose 这个flag一直都有么?
离线nanhu_007

只看该作者 5楼 发表于: 2006-03-05
下面是引用lj_0212于2006-03-02 11:19发表的:
先感谢一下!
我马上测试一下。
再问几个问题?
那是否意味着已经不需要显示的窗口部件只调用一下close()就可以了?这样不会占用内存空间么?不会因为这样做造成溢出吧?

调用close()会把对象给析构掉。
“不会因为这样做造成溢出吧?”不知道是什么意思????
我猜应该是会不会内存泄漏吧?
那是看你的程序是什么写的了
离线wwlxmai

只看该作者 6楼 发表于: 2006-03-07
你看看嵌入式开发的tips
在嵌入式中一般用hide
虽然浪费一点内存
但是性能得到提高
close的确是要销毁对象的
快速回复
限100 字节
 
上一个 下一个