QT 布局

 QT 布局一般分为手动布局和自动布局(用布局管理器)。

手动布局就是自己设置每个控件的大小,以及界面的大小,能非常确定每个界面的大小状态,好处就是简单,布局紧凑,可控性高。
自动布局就是用布局管理器自动管理布局,可控性不是特别高,特别是在一个很大的界面中显示一个很小或者不能不满界面的时候,这个时候布局显得格外重要,布局处理不好的话,界面看起来一点都不协调,而且很难令人接受。

自动布局设计的一些技巧:
void setContentsMargins(int left, int top, int right, int bottom);
//设置布局内部四边的空隙
newLayout->setContentsMargins(0,0,50,0);
当一个很小的控件或者嵌入界面在一个很大的界面上时,我们就可以通过控制小界面在大界面位置上的 上下左右 来控制界面布局。

newLayout->setAlignment(Qt::AlignHCenter);
newLayout->setAlignment(Qt::AlignVCenter);
也可以设置小界面在大界面中的何处,居中、置顶、靠右........
下面是AlignmentFlag 枚举定义:
enum AlignmentFlag {
        AlignLeft = 0x0001,
        AlignLeading = AlignLeft,
        AlignRight = 0x0002,
        AlignTrailing = AlignRight,
        AlignHCenter = 0x0004,
        AlignJustify = 0x0008,
        AlignAbsolute = 0x0010,
        AlignHorizontal_Mask = AlignLeft | AlignRight | AlignHCenter | AlignJustify | AlignAbsolute,
        AlignTop = 0x0020,
        AlignBottom = 0x0040,
        AlignVCenter = 0x0080,
        AlignVertical_Mask = AlignTop | AlignBottom | AlignVCenter,
        AlignCenter = AlignVCenter | AlignHCenter
这样如果还解决不了问题的话,就用QSpacerItem 
QSpacerItem *horizontalSpacer3 = new QSpacerItem(166346, 166346, QSizePolicy::Expanding, QSizePolicy::Expanding);
根据需求自己定义初始化大小。


还有一种情况,就在是一个布局管理器中有好多控件,但是想控制每个控件所占用的大小,而且又不能写死每个控件的大小(方便最大化或者改变整个界面显示的时候),比如:
QVBoxLayout *leftLayout = new QVBoxLayout;
    leftLayout->setMargin(0);
    leftLayout->addWidget(ui->webView);
    leftLayout->addWidget(ui->onvifWidget);
    leftLayout->addLayout(webOnvifBarLayout);
一个界面中有三个界面组成,这个时候就用
       leftLayout->setStretch(0,30);
    leftLayout->setStretch(1,30);
    leftLayout->setStretch(2,1); 
来设置每个界面所占用的比例。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值