6.QT布局使用

一、布局管理器
1.实例:窗体最小分辨率为400*400,窗体上放置两个文本输入框, QTextEdit
横向均分两个文本输入框。使用代码来实现上述功能。

使用UI编辑器布局来改进界面不足。

2.布局管理器
手工布局(适用于测试某个小功能):
	简单快捷,但不能做到自适应窗口,需要自己计算窗口位置和大小

布局管理器布局(适用于项目开发):
	1.子部件的定位
	2.窗口的合理默认空间
	3.窗口的合理最小空间
	4.窗口自适应管理
	5.字体大小或者内容变化
	
详见帮助文档:Layout Management

布局的类关系:
					QLayout
-----------------------------------------------------------------
	QBoxLayout			 QGridLayout     QStackedLayout
-----------------------------------------------------------------
QHBoxLayout 			QVBoxLayout
-----------------------------------------------------------------

margin:代表布局和外围窗体之间的间隔
left top right bottom

spacing:代表布局内部件之间的间隔

stretch:代表布局内部件的占比

如果使用ui编辑器增加空白占比,需要增加spacer部件,
然后设置它的占比。

	
3.QHBoxLayout:水平布局


继承自QBoxLayout
	构造函数:	QHBoxLayout(QWidget * parent)
	继承常用方法:
		QHBoxLayout(QWidget * parent)
			在parent部件上增加QHBoxLayout布局
			
		void addWidget(QWidget *widget, int stretch = 0, Qt::Alignment alignment = 0)
			布局上加部件
		
		void addLayout(QLayout *layout, int stretch = 0)
			布局上加布局
		
		void QBoxLayout::addStretch(int stretch = 0)
			在布局中增加自适应的空白
			
		void QBoxLayout::setStretch(int index, int stretch)
			设置自适应比例空白
			
		void QBoxLayout::addSpacing(int size)  
			在布局中增加size像素的空白
			
		void QBoxLayout::setMargin(int margin)  
			设置布局和外围窗体之间的空白距离

	


4.实例:根据设计图,完成双向进度条显示部件,要求界面可自适应,
界面基础大小为300*50。

进度条样式参考:

```cpp
#define  PROGRESS_LEFT_STYLE (QString(""\
    "QProgressBar {"\
    "background-color: #dbdee0;"\
    "border-right:1px solid #00ff00"\
    ""\
    "}"\
    "QProgressBar::chunk {"\
    "background-color:  #FF5500" "}"))

#define  PROGRESS_RIGHT_STYLE (QString(""\
    "QProgressBar {"\
    "background-color: #dbdee0;"\
    "border-left:1px solid #00ff00"\
    ""\
    "}"\
    "QProgressBar::chunk {"\
    "background-color:  #FF5500" "}"))

用法:	
leftBar->setStyleSheet(PROGRESS_LEFT_STYLE);
rightBar->setStyleSheet(PROGRESS_RIGHT_STYLE);





进度条无法自适应高度请参考sizePolicy属性帮助文档解决。

发布了10 篇原创文章 · 获赞 14 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_40083589/article/details/94025712
今日推荐