隐藏,关闭和显示在qt之间的区别

Mit*_*tel 10 qt qt5

隐藏,关闭和显示按钮或内存方面的任何小部件有什么区别?

如果我不想再次使用widget,哪个更好?

Ben*_*n T 12

首先如@Hayt所述,阅读文档.

对于实际答案:

  1. hide()是一样的setVisible(false).
  2. show()是一样的setVisible(true).
  3. close()尝试通过触发a关闭窗口小部件QCloseEvent,如果事件被接受,结果是:

    1. 与调用hide(),如果Qt::WA_DeleteOnClose属性不上这是默认的小部件设置.

    2. 与调用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()只隐藏。它只是图形化的,你看不到你的小部件,但你不会破坏它。

但我认为该函数的名称足够明确且易于理解!