隐藏,关闭和显示按钮或任何小部件在内存方面的区别是什么?
如果我不想再使用小部件,哪个更好?
首先如@Hayt所说,阅读文档。
实际答案:
-
hide()
与setVisible(false)
相同。 -
show()
与setVisible(true)
相同。 -
close()
试图通过触发QCloseEvent
来关闭小部件,如果事件被接受,结果为:-
如果小部件上没有设置
Qt::WA_DeleteOnClose
属性,则调用hide()
相同,这是默认的 -
如果设置了
Qt::WA_DeleteOnClose
,则与调用deleteLater()
相同。
-
在内存方面,3中的任何一个都不会改变任何东西(如果设置了Qt::WA_DeleteOnClose
,则close()
除外)。如果您再也不想使用这个小部件,最好的方法是删除它:
delete pointerToMyWidget;
或
pointerToMyWidget->deleteLater();
第二种形式通常更安全,因为第一种形式可能会有危险,这取决于您写它的位置。
根据Qt,您可以阅读以下内容:
关闭:关闭此小部件。如果小部件已关闭,则返回true;否则返回false。
首先它向小部件发送一个QCloseEvent。小部件是隐藏的,如果它接受关闭事件。如果忽略事件,则什么也不会发生。的QWidget::closeEvent()的默认实现接受关闭事件。
如果小部件具有Qt::WA_DeleteOnClose标志,则小部件也是删除。关闭事件被传递到小部件,无论是否小部件是否可见
QApplication::lastWindowClosed()信号在最后一个窗口关闭时发出的可见主窗口(即没有父窗口)Qt::WA_QuitOnClose属性集关闭。默认情况下,此属性除瞬态窗口(如splash)外的所有小部件都设置了屏幕、工具窗口和弹出式菜单
.
HIDE:隐藏小部件。这个函数等价于setVisible(假)。
注意:如果您正在使用QDialog或它的子类并且调用执行show()函数后,将显示对话框在原来的位置
.
SHOW:显示小部件及其子小部件。这个函数是相当于setVisible(true)。
如果您不需要使用小部件,请调用close()
。您可以管理事件来销毁您的小部件。
hide()
只能隐藏。它只是图形化的,你不能看到你的小部件,但你不能破坏它。
但是我认为函数的名字足够显式,可以理解!