isHiden和isVisible的區別(isVisible更可靠)


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

1、isHiden只是返回部件的隱藏屬性,並不能表示部件當前的真實狀態。比如A部件有個子部件B,而A處於隱藏狀態,子部件B必然也不可見,但子部件B本身的isHiden還是為false。

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

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


還有值得注意的一個地方,如果向Qt部件窗口發送SW_HIDE消息,窗口是會隱藏的,但是其isVisible的值並未更新。
也就是說,窗口已經隱藏了,但是isVisible仍然會返回true。這有可能會影響代碼中的邏輯判斷。

如果覺得有必要,可以在nativeEvent中做出同步處理,當收到WM_SHOWWINDOW消息的時候設置Visible屬性

 

[cpp]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
    1. bool MainWindow::nativeEvent(const QByteArray &eventType, void *message, long *result)  
    2. {  
    3.     if (eventType == "windows_generic_MSG")  
    4.     {  
    5.         PMSG msg = (PMSG)message;  
    6.         if (msg->message == WM_SHOWWINDOW)  
    7.         {  
    8.             this->setVisible(msg->wParam ? true : false);  
    9.             return true;  
    10.         }  
    11.     }  
    12.   
    13.     return QMainWindow::nativeEvent(eventType, message, result);  
    14. }  

http://blog.csdn.net/aqtata/article/details/30506673


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM