(QT)内外边距与布局
Posted Zhang丶&|!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(QT)内外边距与布局相关的知识,希望对你有一定的参考价值。
一、内外边距
1、概念:
margin:一个控件的边框到另一个控件的边框的距离,属于容器外部距离;QMargins
是一个包含四个整数值的对象,分别表示控件的左、上、右、下边框距离内部元素的距离。
padding:自身边框到自身内部另一个容器边框之间的距离,属于容器内距离
如:
QPushButtonmargin:50px; //设置外边距为50px
background-color:#CDCDB4; //背景颜色
border-width:30px; //描边
border-bottom-width:10px; //底部边框设置为10px
border-color:blue;
border-style:solid;
padding-top:50px; //上方内边距为50px
二、布局
1、QHBoxLayout
:水平布局
将控件按照水平方向排列,控件之间没有垂直间距。
主要参数:
spacing:间隔距离
stretch:拉伸因子(系数)
sizePolicy:大小策略
2、QVBoxLayout:
垂直布局
将控件按照垂直方向排列,控件之间没有水平间距。
3、QGridLayout:
网格布局
将控件按照行和列进行排列,每个控件占据一个格子。
三、分裂器
1、概念
分裂器是一种控件,用于将窗口分割成多个区域,每个区域可以放置不同的控件。分裂器控件通常用于需要分隔不同区域的界面,例如在文本编辑器中将文本区域和目录区域分隔开来。
2、属性
orientation:设置方向,可设置水平或垂直方向
opaqueResize:为false时,在拖动的时候会显示一条灰色的线条,在拖动到位并释放鼠标后再显示分割线条。默认为true, 实时更新子控件大小。
childrenCollapsible:为true时,用户可以将子部件的大小调整为0
四、隔离弹簧
1、概念
隔离弹簧(QSpacerItem)是Qt中的一种布局控件,它是一种空白控件,用于在布局中创建空白间隔,从而调整布局中其他控件的位置和大小。
2、属性
orientation:方向属性,可设置水平或垂直方向
sizeType:大小类型,可以设置好几种,如固定大小,可扩大的等
sizeHint:缺省大小,也就是默认大小
iOS,标题中自定义单元格的边距与行不同,自动布局?
【中文标题】iOS,标题中自定义单元格的边距与行不同,自动布局?【英文标题】:iOS, margin on custom cells different in header than row, with autolayout? 【发布时间】:2015-05-04 21:54:59 【问题描述】:我有一个问题。我对表格行使用 nib 文件,对节标题使用相同的 nib。我还在自定义单元格上使用自动布局。
虽然我使用不同的文字和颜色等。
我的想法是,我可以对齐列等。
但是,部分标题似乎比单元格宽,尽管背景似乎是全宽。
我尝试了各种方法来设置宽度,认为它的设置方式不同,有边距。
这是我的代码....
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:
(NSInteger)section
CGFloat w = [UIScreen mainScreen].bounds.size.width;
HeaderSectionReportView *customHeaderView = [[HeaderSectionReportView alloc]
initWithFrame:CGRectMake(0.0, 0.0, w, 20.0) ....
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ReportCell"
owner:self options:nil];
ReportCell *customView = (ReportCell *)[nib objectAtIndex:0];
customView.descriptionValue.backgroundColor = [UIColor clearColor];
//snip
customView.frame = CGRectMake(0,0, w,customView.frame.size.height);
[customHeaderView addSubview:customView];
return customHeaderView;
//
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:
(NSIndexPath *)indexPath
static NSString *CellIdentifier = @"ReportCell";
ReportCell *cell = (ReportCell *) [tableView
dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
NSArray *topLevelObjects = [[NSBundle mainBundle]
loadNibNamed:@"ReportCell" owner:nil options:nil];
for (id currentObject in topLevelObjects)
if ([currentObject isKindOfClass:[UITableViewCell class]])
cell = ((ReportCell *) currentObject);
break;
CGFloat w = [UIScreen mainScreen].bounds.size.width;
cell.frame = CGRectMake(0,0, w,cell.frame.size.height);
cell.descriptionValue.text = desc;
这也是我的自动布局约束
【问题讨论】:
尝试设置约束,而不从底部的“pin”菜单中选中“constrain to margins”按钮。 @pandarencodemaster 谢谢你解决了它:) 很高兴听到这个消息!我不确定是否必须将其添加为答案? 【参考方案1】:标题和单元格的宽度由tableView
处理。所以设置cell.frame
不会有任何区别。
因此,您对单元格的限制似乎有点偏离。它们都应该设置为 0 并且没有任何边距(禁用/取消勾选相对于边距)。
希望这能解决您的问题。如果您需要更多帮助,请告诉我
【讨论】:
以上是关于(QT)内外边距与布局的主要内容,如果未能解决你的问题,请参考以下文章