天天看點

Qt 可見性 isHiden和isVisible的差別

之前一直對isHiden和isVisible的差別比較模糊,都是亂用的。今天因需要仔細看了一下。

1、isHiden隻是傳回部件的隐藏屬性,并不能表示部件目前的真實狀态。比如A部件有個子部件B,而A處于隐藏狀态,子部件B必然也不可見,但子部件B本身的isHiden還是為false。

2、判斷部件是否可見應該用isVisible屬性。

3、對于一個頂層視窗來說,雖然可以不用考慮以上兩條,但還是建議使用isVisible來判斷可見性。

bool MainWindow::nativeEvent(const QByteArray &eventType, void *message, long *result)
{
    if (eventType == "windows_generic_MSG")
    {
        PMSG msg = (PMSG)message;
        if (msg->message == WM_SHOWWINDOW)
        {
            this->setVisible(msg->wParam ? true : false);
            return true;
        }
    }

    return QMainWindow::nativeEvent(eventType, message, result);
}