qt中隐藏、关闭和显示之间的差异
按钮或任何小部件的隐藏、关闭和显示在内存方面有什么区别 如果我不想再次使用widget,哪个更好?根据,您可以阅读以下内容: 关闭: 关闭此小部件。如果小部件已关闭,则返回true;否则 返回false 首先,它向小部件发送一个QCloseEvent。如果该小部件处于隐藏状态,则该小部件将被隐藏 接受关闭事件。如果忽略该事件,则不会发生任何事情。这个 QWidget::closeEvent()的默认实现接受关闭 事件 如果小部件具有Qt::WA_DeleteOnClose标志,则小部件也会 删除。无论 小部件是否可见 QApplication::lastWindowClosed()信号在上次 带有 Qt::WA_QuitOnClose属性集已关闭。默认情况下,此属性 为除临时窗口(如splash)之外的所有窗口小部件设置 屏幕、工具窗口和弹出菜单 隐藏:隐藏小部件。此函数相当于 setVisible(false) 注意:如果您使用QDialog或其子类并调用 函数之后,将显示对话框 在它原来的位置 显示:显示小部件及其子小部件。此函数是 等同于setVisible(true) 如果不需要使用小部件,请调用qt中隐藏、关闭和显示之间的差异,qt,qt5,Qt,Qt5,按钮或任何小部件的隐藏、关闭和显示在内存方面有什么区别 如果我不想再次使用widget,哪个更好?根据,您可以阅读以下内容: 关闭: 关闭此小部件。如果小部件已关闭,则返回true;否则 返回false 首先,它向小部件发送一个QCloseEvent。如果该小部件处于隐藏状态,则该小部件将被隐藏 接受关闭事件。如果忽略该事件,则不会发生任何事情。这个 QWidget::closeEvent()的默认实现接受关闭 事件 如果小部件具有Qt::WA_DeleteOnClose标志,则小部件也会 删除
close()
。您可以管理事件以销毁小部件
hide()
仅隐藏。它只是图形化的,你看不到你的小部件,但你不会破坏它
但我认为函数的名称足够明确,可以理解 首先,正如@Hayt所说的,文档
对于实际答案:
hide()
与setVisible(false)
相同show()
与setVisible(true)
相同close()
通过触发QCloseEvent
尝试关闭小部件,如果事件被接受,结果是:
Qt::WA_DeleteOnClose
属性,则调用hide()
与此相同Qt::WA_DeleteOnClose
,则与调用deleteLater()
相同Qt::WA_DeleteOnClose
,则close()
除外)。如果您不想使用小部件,最好将其删除:
delete pointerToMyWidget;
或
第二种形式通常更安全,因为第一种形式可能很危险,这取决于你在哪里写。(例如,您在由您删除的小部件发出的信号调用的插槽中删除它)。您是否尝试阅读这些插槽的文档?您可以使用close()删除(并释放内存)小部件,只需管理信号。或者,如果您使用
删除,您可以通过调用删除@BenjaminT将其删除,首先确保它没有父对象,否则当它被销毁时,父对象将再次对其调用delete
。@Valerio否,子对象将从其父对象-子对象列表中删除自己。这是通过调用d->setParent\u helper(0)完成的代码>位于~QObject()
中。因此,当父对象被销毁时,被删除的子对象将不会再次被删除,因为它不再作为子对象列出。
pointerToMyWidget->deleteLater();