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

首頁 > 學院 > 開發(fā)設計 > 正文

布局管理器的使用

2019-11-09 18:01:36
字體:
供稿:網(wǎng)友

這里寫圖片描述

布局管理類 介紹:

**- QHBoxLayout 水平布局 - QVBoxLayout 垂直布局 - QGridLayout 網(wǎng)格布局 - QStackedLayout 把子控件進行分組或者分頁,一次只顯示一組或者一頁,隱藏其他組或者頁上的控件。**


布局管理中結合控件的sizePolicy屬性,進行調(diào)整

結合控件的SizePolicy屬性,來控制布局管理中的控件的尺寸自適應方式。

控件的sizePolicy說明控件在布局管理中的縮放方式。Qt提供的控件都有一個合理的缺省sizePolicy,但是這個缺省值有時不能適合所有的布局,開發(fā)人員經(jīng)常需要改變窗體上的某些控件的sizePolicy。一個QSizePolicy的所有變量對水平方向和垂直方向都適用。下面列舉了一些最長用的值:

A. Fixed:控件不能放大或者縮小,控件的大小就是它的sizeHint。

B. Minimum:控件的sizeHint為控件的最小尺寸。控件不能小于這個sizeHint,但是可以

放大。

C. Maximum:控件的sizeHint為控件的最大尺寸,控件不能放大,但是可以縮小到它的最小

的允許尺寸。

D. PReferred:控件的sizeHint是它的sizeHint,但是可以放大或者縮小

E. Expandint:控件可以自行增大或者縮小

注:sizeHint(布局管理中的控件默認尺寸,如果控件不在布局管理中就為無效的值)

摘自: http://www.cnblogs.com/QQ78292959/archive/2012/08/13/2637209.html http://blog.csdn.net/lastsoup/article/details/7028243


Demo1。 6個button(編號1~6)水平放置。其中 1,2 之間間隔2個像素;3,4之間間隔10個像素 ;5,6之間間隔20個像素。

解決方式: 每兩個放在一個QHBoxLayout中。然后三個loyout 在放到一個總的mainLayout中。

leftLayout->addWidget(button1); leftLayout->addWidget(button2); leftLayout->setSpacing(2); midlayout->addWidget(button3); midlayout->addWidget(button4); midlayout->setSpacing(10); rightlayout->addWidget(button5); rightlayout->addWidget(button6); rightlayout->setSpacing(20); mainLayout->addLayout(leftLayout); mainLayout->addLayout(midlayout); mainLayout->addLayout(rightlayout); this->setLayout(mainLayout);

這樣就可以了。其中setSpacing() 設置了布局中 控件之間的距離。 但是 如果布局之間有三個按鈕(A,B,C),其中A,B間隔2像素;B,C間隔10像素,這就比較尷尬了。 其實可以使用 addSpacing(int ) 方法

rightlayout->setSpacing(0); rightlayout->addWidget(buttonA); rightlayout->addSpacing(2); rightlayout->addWidget(buttonB); rightlayout->addSpacing(8); rightlayout->addWidget(buttonC);

補充:

bool QLayout::setAlignment(QWidget *w, Qt::Alignment alignment) //設置對齊方式void QLayout::setMargin(int margin) //頁邊距

Demo2 如果button有MinimumSize,導致一行無法容納下所有的buttons 例如 我們每點擊一次就會加一個button,如何讓添加的button自動換行。 可以使用QGridLayout 。

layout = new QGridLayout(this); button = new QPushButton(this); layout->setHorizontalSpacing(2); layout->setVerticalSpacing(10); button->setText(QStringLiteral("新建")); button->move(0,0); QObject::connect(button,SIGNAL(clicked(bool)),this,SLOT(on_button_clicked(bool)));void Widget::on_button_clicked(bool){ QPushButton * button = new QPushButton; button->setText(QStringLiteral("button")); button->setMaximumSize(150,50); button->setMinimumSize(150,50); int row = countButton/numCol; int col = countButton%numCol; layout->addWidget(button,row,col); ++countButton;}

這樣每點擊新建都會給loyout加一個button,可以計算位置放置。 如果依然每兩個之間固定間隔,則可以結合Demo1。


上一篇:IPC機制

下一篇:ARC機制下的總結

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 平塘县| 常州市| 四川省| 英山县| 大城县| 清流县| 漠河县| 剑河县| 进贤县| 昭苏县| 界首市| 尚义县| 法库县| 正阳县| 宝兴县| 防城港市| 东乡族自治县| 基隆市| 康保县| 临海市| 舒兰市| 孟州市| 法库县| 伊川县| 宁河县| 新建县| 沂南县| 贵南县| 临汾市| 遂平县| 广饶县| 司法| 阿拉善盟| 舒城县| 南和县| 班玛县| 松溪县| 南澳县| 庆城县| 澜沧| 石楼县|