国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 操作系統(tǒng) > 正文

第六章 Qt布局管理器Layout

2024-06-28 13:22:03
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
第六章 Qt布局管理器Layout

第六章 Qt布局管理器Layout

大家有沒有發(fā)現(xiàn)一個(gè)現(xiàn)象,我們放置一個(gè)組件,給組件最原始的定位是給出這個(gè)控件的坐標(biāo)和寬高值,這樣Qt就知道這個(gè)組件的位置。當(dāng)用戶改變窗口的大小,組件還靜靜地呆在原來(lái)的位置,這有時(shí)候顯然不是很科。所以Qt提供一種機(jī)制-布局,解決了這個(gè)問(wèn)題。只要把組件放入某一種布局之中,當(dāng)需要調(diào)整大小或位置的時(shí)候,Qt就知道該怎樣進(jìn)行調(diào)整。

下面舉一個(gè)簡(jiǎn)單例子:

 1 #include <Qapplication> 2 #include <QWidget> 3 #include <QSpinBox> 4 #include <QSlider> 5 #include <QHBoxLayout> 6  7 int main(int argc, char *argv[]) 8 { 9     QApplication a(argc, argv);10     QWidget w = new QWidget;11     w.setWindowTitle("Enter your age");12 13     QSpinBox *spinBox = new QSpinBox;14     QSlider *slider = new QSlider(Qt::Horizontal);15     spinBox->setRange(0, 130);16     slider->setRange(0, 130);17 18     QObject::connect(slider, SIGNAL(valueChanged(int)), spinBox, SLOT(setValue(int)));19     QObject::connect(spinBox, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int)));20 21     spinBox->setValue(35);22 23     QHBoxLayout *layout = new QHBoxLayout;24     layout->addWidget(spinBox);25     layout->addWidget(slider);26     w.setLayout(layout);27 28     w.show();29     30     return a.exec();31 }

編譯運(yùn)行結(jié)果(直接改變窗體大小,看組件的變化):

Qt一共有5種主要的layout,分別是:

水平布局

垂直布局

使用分裂器水平布局

使用分裂器垂直布局

柵格布局

下面使用Qt Creator的designer對(duì)垂直布局進(jìn)行舉例,其他布局的使用方法類似。

1.在左邊的器件欄里拖入三個(gè)PushButton和一個(gè)VerticalLayout(垂直布局管理器)到中心面板。如下圖。

2.將這三個(gè)按鈕放入垂直布局管理器,效果如下。可以看到按鈕垂直方向排列,并且寬度可以改變,但高度沒有改變。

3.我們將布局管理器整體選中,按下上面工具欄的BreakLayout按鈕,便可取消布局管理器。(我們當(dāng)然也可以先將按鈕移出,再按下Delete鍵將布局管理器刪除。)

4.下面我們改用分裂器部件(QSplitter)。

先將三個(gè)按鈕同時(shí)選中,再按下上面工具欄的LayOutVerticallyinSplitter(垂直分裂器)。

效果如下圖。可以看到按鈕的大小可以隨之改動(dòng)。這也就是分裂器和布局管理器的分別。

5.其實(shí)布局管理器不但能控制器件的布局,還有個(gè)很重要的用途是,它能使器件的大小隨著窗口大小的改變而改變。

我們先在主窗口的中心拖入一個(gè)文本編輯器TextEdit。

這時(shí)直接運(yùn)行程序,效果如下。可以看到它的大小和位置不會(huì)隨著窗口改變。

下面我們選中主窗口部件,然后在空白處點(diǎn)擊鼠標(biāo)右鍵,選擇Layout->LayOutinaGrid,使整個(gè)主窗口的中心區(qū)處于網(wǎng)格布局管理器中。

可以看到,這時(shí)文本編輯器已經(jīng)占據(jù)了整個(gè)主窗口的中心區(qū)。

運(yùn)行一下程序,可以看到無(wú)論怎樣拉伸窗口,文本編輯框的大小都會(huì)隨之改變。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 曲周县| 公安县| 六安市| 四川省| 琼中| 广宁县| 崇义县| 金秀| 五常市| 光泽县| 中江县| 镇远县| 禄劝| 越西县| 陈巴尔虎旗| 得荣县| 广南县| 东丰县| 稻城县| 扶余县| 广德县| 兰坪| 武乡县| 韶山市| 碌曲县| 故城县| 定远县| 五大连池市| 华池县| 西乡县| 麻栗坡县| 兴仁县| 象山县| 曲松县| 井冈山市| 大城县| 永川市| 奇台县| 临漳县| 尼勒克县| 南漳县|