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

时间:2016-09-09 08:52:22

标签: qt qt5

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

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

2 个答案:

答案 0 :(得分:11)

首先是@Hayt,read文档。

对于实际答案:

  1. setVisible(false)show()相同。
  2. setVisible(true)close()相同。
  3. QCloseEvent尝试通过触发hide()来关闭窗口小部件,如果事件被接受,则结果为:

    1. 与调用Qt::WA_DeleteOnClose相同,如果未在默认小部件上设置deleteLater()属性。

    2. 与设置Qt::WA_DeleteOnClose时调用close()相同。

  4. 在记忆方面,3中的任何一个都不会改变任何东西(Qt::WA_DeleteOnClose除外,如果你设置了delete pointerToMyWidget; )。如果您不想使用小部件,最好删除它:

    pointerToMyWidget->deleteLater();
    

    {{1}}

    第二种形式通常更安全,因为第一种形式可能是危险的,这取决于你写它的地方。 (例如,您在由删除的小部件发出的信号调用的插槽中删除它。)

答案 1 :(得分:0)

根据Qt,您可以阅读:

  

关闭:   关闭此小部件。如果窗口小部件已关闭,则返回true;除此以外   返回false。

     

首先它向小部件发送一个QCloseEvent。如果它是隐藏的小部件   接受关闭事件。如果它忽略了该事件,则没有任何反应。该   QWidget :: closeEvent()的默认实现接受关闭   事件

     

如果窗口小部件具有Qt :: WA_DeleteOnClose标志,则窗口小部件也是   删除。无论是否,都会向窗口小部件发送一个关闭事件   小部件是否可见。

     

最后一次发出QApplication :: lastWindowClosed()信号   可见的主窗口(即没有父窗口)与   Qt :: WA_QuitOnClose属性集已关闭。默认情况下此属性   为除了瞬态窗口(如splash)之外的所有窗口小部件设置   屏幕,工具窗口和弹出菜单。

  

隐藏:隐藏小部件。这个功能相当于   调用setVisible(假)。

     

注意:如果您正在使用QDialog或其子类并且您正在调用   show()函数在此函数之后,将显示对话框   在原来的位置。

  

SHOW:显示窗口小部件及其子窗口小部件。这个功能是   相当于setVisible(true)。

如果您不需要使用小部件,请致电alerts。您可以管理事件以销毁您的小部件。

close()只隐藏。它只是图形化的,你看不到你的小部件但是你没有销毁它。

但是我认为功能的名称足以明白了!