Ben*_*n T 12
首先如@Hayt所述,阅读文档.
对于实际答案:
hide()是一样的setVisible(false).show()是一样的setVisible(true).close()尝试通过触发a关闭窗口小部件QCloseEvent,如果事件被接受,结果是:
与调用hide(),如果Qt::WA_DeleteOnClose属性不上这是默认的小部件设置.
与调用deleteLater()if 相同Qt::WA_DeleteOnClose.
在记忆方面,3中的任何一个都不会改变任何东西(除非close()你已经设置Qt::WA_DeleteOnClose).如果您不想使用小部件,最好删除它:
delete pointerToMyWidget;
Run Code Online (Sandbox Code Playgroud)
要么
pointerToMyWidget->deleteLater();
Run Code Online (Sandbox Code Playgroud)
第二种形式通常更安全,因为第一种形式可能是危险的,这取决于你写它的地方.(例如,您在由删除的小部件发出的信号调用的插槽中删除它).
小智 1
根据Qt,您可以阅读以下内容:
CLOSE :关闭此小部件。如果小部件已关闭,则返回 true;否则返回 false。
首先,它向小部件发送 QCloseEvent。如果小部件接受关闭事件,则该小部件将被隐藏。如果它忽略该事件,则不会发生任何事情。QWidget::closeEvent() 的默认实现接受关闭事件。
如果小部件具有 Qt::WA_DeleteOnClose 标志,则该小部件也会被删除。无论小部件是否可见,关闭事件都会传递到小部件。
当设置了 Qt::WA_QuitOnClose 属性的最后一个可见主窗口(即没有父窗口的窗口)关闭时,会发出 QApplication::lastWindowClosed() 信号。默认情况下,此属性是为除瞬态窗口(例如启动屏幕、工具窗口和弹出菜单)之外的所有小部件设置的。
。
HIDE :隐藏小部件。该函数相当于setVisible(false)。
注意:如果您正在使用 QDialog 或其子类,并且在此函数之后调用 show() 函数,则对话框将显示在其原始位置。
。
SHOW :显示小部件及其子小部件。该函数相当于setVisible(true)。
如果您不需要使用您的小部件,请致电close()。您可以管理事件来销毁您的小部件。
hide()只隐藏。它只是图形化的,你看不到你的小部件,但你不会破坏它。
但我认为该函数的名称足够明确且易于理解!