在使用Qt進行UI設計的時候會用到QSpacerItem控件,QSpacerItem就是一個伸縮器,在Qt Designer中是這兩個控件
。
有時界面在響應某些操作後會涉及到Spacer大小的控制。可以使用QSpacerItem的公共函數
void changeSize ( int w, int h, QSizePolicy::Policy hPolicy = QSizePolicy::Minimum, QSizePolicy::Policy vPolicy = QSizePolicy::Minimum )
來控制其大小,但是使用這個函數後並不會生效(除非是窗口構造函數中執行會生效一次)。還需要執行一個操作
void QLayoutItem::invalidate ()
纔可以令改動生效。這需要QSpacerItem所在的佈局來執行,如果QSpacerItem放在一個佈局裏面則直接讓這個佈局執行invalidate()函數,如果QSpacerItem是在一個QWidget中佈局的可以先使用QLayout * layout () const,獲取窗口布局接着使用invalidate()函數。