在qt中hide, close和show的区别

  • 本文关键字:show 区别 close qt hide qt qt5
  • 更新时间 :
  • 英文 :


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

如果我不想再使用小部件,哪个更好?

首先如@Hayt所说,阅读文档。

实际答案:

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

    1. 如果小部件上没有设置Qt::WA_DeleteOnClose属性,则调用hide()相同,这是默认的

    2. 如果设置了Qt::WA_DeleteOnClose,则与调用deleteLater()相同。

在内存方面,3中的任何一个都不会改变任何东西(如果设置了Qt::WA_DeleteOnClose,则close()除外)。如果您再也不想使用这个小部件,最好的方法是删除它:

delete pointerToMyWidget;

pointerToMyWidget->deleteLater();

第二种形式通常更安全,因为第一种形式可能会有危险,这取决于您写它的位置。

根据Qt,您可以阅读以下内容:

关闭:关闭此小部件。如果小部件已关闭,则返回true;否则返回false。

首先它向小部件发送一个QCloseEvent。小部件是隐藏的,如果它接受关闭事件。如果忽略事件,则什么也不会发生。的QWidget::closeEvent()的默认实现接受关闭事件。

如果小部件具有Qt::WA_DeleteOnClose标志,则小部件也是删除。关闭事件被传递到小部件,无论是否小部件是否可见

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

.

HIDE:隐藏小部件。这个函数等价于setVisible(假)。

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

.

SHOW:显示小部件及其子小部件。这个函数是相当于setVisible(true)。

如果您不需要使用小部件,请调用close()。您可以管理事件来销毁您的小部件。

hide()只能隐藏。它只是图形化的,你不能看到你的小部件,但你不能破坏它。

但是我认为函数的名字足够显式,可以理解!

最新更新