Qt QSpacerItem (Horizontal Spacer 、Vertical Spacer) 的隱藏與顯示


  在使用QT進行頁面ui設計的時候,我們會經常性的使用Horizontal Spacer 或者Vertical Spacer 來輔助我們完成界面的構造。

  在這里我們通俗的說的“彈簧”就是這個東西。我們先來看一下在QT Designer 里面是怎樣顯示的這個“彈簧”的。

  我們看到添加的“彈簧”的類,居然是Spacer,好吧,如果想知道這個類有什么方法,我們通常會去QT Assistant 中輸入類名“Spacer”,但是我們搜索的結果,卻是找不到“Spacer”的類。

  按道理來講,這不應該啊,難道QT Designer 與 QT Assistant 中定義的類不一致嗎?我們通過深究,最終在QT Assistant中發現了一個類 QSpacerItem ,既是QT Designer中的Spacer。

  好了,在QT Assistant中,我們就可以查看它的所有方法了。那么怎么才能讓一個彈簧隱藏或者顯示呢?不像一般的窗口控件一樣,直接有hide, setvisiable, show 之類的直接隱藏或者顯示的方法, QSpacerItem並沒有這樣的方法。但是我們發現另一個方法changeSize

void QSpacerItem::changeSize(int w, int h, QSizePolicy::Policy hPolicy = QSizePolicy::Minimum, QSizePolicy::Policy vPolicy = QSizePolicy::Minimum)

  到現在我們可以知道了,隱藏、顯示一個“彈簧” spacer 就可以像下面的做法:

1 /**************************隱藏 彈簧******************************/
2 ui->horizonSpacer->changeSize(0, 0); // 3  
4 /**************************顯示 horizon 類型的 彈簧******************************/
5 ui->horizonSpacer->changeSize(20, 20, QSizePolicy::Expanding); //顯示 horizon 類型的 彈簧
6  
7 /**************************顯示 vertical 類型的 彈簧******************************/
8 ui->verticalSpacer->changeSize(20, 20, QSizePolicy::Preferred, QSizePolicy::Expanding);

下面是所有彈簧的尺寸策略:

QSizePolicy::Fixed

QSizePolicy::Minimum

QSizePolicy::Maximum

QSizePolicy::Preferred

QSizePolicy::Expanding

QSizePolicy::MinimumExpanding

QSizePolicy::Ignored


免責聲明!

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



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