隐藏,关闭和显示按钮或内存方面的任何小部件有什么区别?
如果我不想再次使用widget,哪个更好?
答案 0 :(得分:11)
首先是@Hayt,read文档。
对于实际答案:
setVisible(false)
与show()
相同。setVisible(true)
与close()
相同。 QCloseEvent
尝试通过触发hide()
来关闭窗口小部件,如果事件被接受,则结果为:
与调用Qt::WA_DeleteOnClose
相同,如果未在默认小部件上设置deleteLater()
属性。
与设置Qt::WA_DeleteOnClose
时调用close()
相同。
在记忆方面,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()
只隐藏。它只是图形化的,你看不到你的小部件但是你没有销毁它。
但是我认为功能的名称足以明白了!