前言
在一些場景下,我們需要控制控件的顯示與隱藏,QWidget
類提供了兩種方法來隱藏控件hide()
和 setVisible(false)
。那么他們有何區別呢?
widget->hide();
// == ?
widget->setVisible(false);
hide()
和 setVisible(false)
解析
根據 Qt 文檔 QWidget::hide() 介紹:
void QWidget:: hide ()
Hides the widget. This function is equivalent to setVisible (false).
即 hide()
等效于 setVisible(false)
。
文檔說的很清楚了,接下來看源碼實現進一步確認,Qt QWidget::hide()
源代碼實現:
void QWidget::hide()
{setVisible(false);
}
那么,這里就很清楚了,hide()
實質上就是調用了 setVisible(false)
。
順便看看 setVisible()
實現:
void QWidget::setVisible(bool visible)
{if (testAttribute(Qt::WA_WState_ExplicitShowHide) && testAttribute(Qt::WA_WState_Hidden) == !visible)return;// Remember that setVisible was called explicitlysetAttribute(Qt::WA_WState_ExplicitShowHide);Q_D(QWidget);d->setVisible(visible);
}
總結
Qt hide()
和 setVisible(false)
沒有區別。
https://doc.qt.io/qt-6/qwidget.html