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

首頁 > 學院 > 開發設計 > 正文

布局管理器的使用

2019-11-09 17:01:38
字體:
來源:轉載
供稿:網友

這里寫圖片描述

布局管理類 介紹:

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


布局管理中結合控件的sizePolicy屬性,進行調整

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

控件的sizePolicy說明控件在布局管理中的縮放方式。Qt提供的控件都有一個合理的缺省sizePolicy,但是這個缺省值有時不能適合所有的布局,開發人員經常需要改變窗體上的某些控件的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機制下的總結

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 广元市| 小金县| 海伦市| 潢川县| 长沙市| 卢氏县| 家居| 会同县| 上高县| 石阡县| 遂宁市| 洱源县| 南部县| 隆昌县| 雅江县| 靖边县| 澄城县| 涿州市| 邳州市| 通渭县| 启东市| 屯门区| 蒲江县| 吉林省| 城固县| 怀化市| 平安县| 鲁山县| 漳州市| 晋城| 囊谦县| 沙坪坝区| 武安市| 凤山市| 建水县| 南召县| 锦屏县| 鄂尔多斯市| 广南县| 甘泉县| 清新县|