在内存方面,PushButton或其他小部件的hide、close和show之间有什么区别?
如果我不想再使用小部件,哪种方法更好?
首先,如@Hayt所说,阅读文档。
对于实际答案:
hide()
与setVisible(false)
相同。show()
与setVisible(true)
相同。close()
尝试通过触发QCloseEvent
来关闭小部件,如果事件被接受,则结果为:
如果小部件上没有设置Qt::WA_DeleteOnClose
属性(默认情况下),则与调用hide()
相同。
如果设置了Qt::WA_DeleteOnClose
,则与调用deleteLater()
相同。
就内存而言,这3个中的任何一个都不会改变任何内容(除了close()
如果您设置了Qt::WA_DeleteOnClose
)。如果您不想再使用小部件,最好将其删除:
delete pointerToMyWidget;
或者pointerToMyWidget->deleteLater();
第二种形式通常更安全,因为第一种形式可能会因为你写入的位置不当而导致危险。(例如,在一个由你删除的小部件发出的信号调用的插槽中删除它)。
delete
来删除它。 - Benjamin Tdelete
删除它,请确保它没有父级,否则当它被销毁时,父级将再次调用 delete
。 - Notin_sensus~QObject()
中调用d->setParent_helper(0);
来完成的。因此,当父项被销毁时,已删除的子项不会再次被删除,因为它不再列为子项。 - Benjamin T.
HIDE:隐藏小部件。此函数等效于setVisible(false)。
注意:如果您正在使用QDialog或其子类,并在调用此函数后调用show()函数,则对话框将显示在其原始位置。
.
SHOW:显示小部件及其子小部件。此功能相当于setVisible(true)。
如果您不需要使用小部件,请调用close()
。您可以管理事件以销毁小部件。
hide()
仅隐藏。这只是图形上的,您看不到小部件,但不会销毁它。
但我认为函数的名称足够明确,可以理解!