一、導讀
在使用Qt開發界面的時候,大小限定是常使用的操作。在界面元素的鼻祖QWidget中提供了一系列的方法,用于設定指定元素的大小或者最小/最大的大?。?/p>
//設置最大高度 voidsetMaximumHeight(intmaxh) //設置最大大小 voidsetMaximumSize(constQSize&) //設置最大大小(包含最大寬度、最大高度) voidsetMaximumSize(intmaxw,intmaxh) //設置最大寬度 voidsetMaximumWidth(intmaxw) //設置最小高度 voidsetMinimumHeight(intminh) //設置最小大小 voidsetMinimumSize(constQSize&) //設置最小大?。ò钚挾?、最小高度) voidsetMinimumSize(intminw,intminh) //設置最小寬度 voidsetMinimumWidth(intminw) //設置固定高度 voidsetFixedHeight(inth) //設置固定寬度 voidsetFixedWidth(intw) //設置固定大小 voidsetFixedSize(constQSize&s) //設置固定大小(包含固定寬度和高度) voidsetFixedSize(intw,inth)
上述的成員函數,功能與名稱描述一致。
在不同顯示屏大小的平臺下,或者需要開發自適應大小的應用窗體時,大小限定是必備的操作。
二、大小限定背后的設計思路
如果應用程序的界面窗體大小在實際開發中大小是不變的,就需要使用setFixedxxx函數將窗體設置為固定的大小,不然,在鼠標拖動的情況下,且窗體中的各界面控件沒有設計自適應,則會出現窗體填充不滿或者多控件之間彼此覆蓋的情況,例如如果使用《Qt這四種設置窗體背景的方法,都知道嗎?》一文中所述的QPalette方法設置了背景圖:
Widget::Widget(QWidget*parent) :QWidget(parent), ui(newUi::Widget) { ui->setupUi(this); QPalettepalette=this->palette(); palette.setBrush(QPalette::Window,QBrush(QPixmap(":/images/bk.png"))); this->setPalette(palette); }
這時候拖動鼠標,則會出現下圖所示效果:
如果使用QLabel方法設置背景圖:
ui->label->setPixmap(QPixmap(":/images/bk.png"));
則會出現下圖所示效果:
綜上,開發不需要自適應的窗體界面時,為了不影響應用軟件的界面窗體中呈現內容的效果,設置窗體的大小是必要的。
如何設置窗體或者窗體中的界面控件的大小呢?有兩種方法:
(1)在代碼中使用大小限定函數進行設置。
(2)在Qt Designer中選中需要設置的界面控件對象,右鍵單擊,在彈出的對話框中選擇“大小限定”下的選項。
自適應的窗體開發,需要使用Qt提供的布局器(QBoxLayout、QFormLayout、QGridLayout和QStackedLayout)來完成,在代碼中可以直接進行布局描述。當然,使用Qt Designer能夠進行自適應窗體的快速開發,特別是垂直Spacer和水平Spacer這兩個輔助控件在自適應窗體開發中特別好用。
三、小生總結
(1)在開發自適應的應用窗體時,在使用布局器進行布局后,如果窗體大小發生改變,可能窗體中的子控件大小會受到影響(發生大小變換),這時候限定子控件的大小是必須的。
(2)在布局的時候,合理設置Spacer的sizeType屬性,往往可以達到我們想要的布局效果。
(3)在使用QLabel顯示文本的時候,QLabel大小需要預先評估,否則太長的字符串無法顯示。
審核編輯:湯梓紅
-
界面
+關注
關注
0文章
59瀏覽量
15636 -
函數
+關注
關注
3文章
4333瀏覽量
62705 -
代碼
+關注
關注
30文章
4791瀏覽量
68700 -
Qt
+關注
關注
1文章
306瀏覽量
37948 -
窗體
+關注
關注
0文章
10瀏覽量
1478
發布評論請先 登錄
相關推薦
評論