Qt学习笔记5 布局----- 各种布局、部件大小、可扩展窗口、分裂器、伙伴、Tab键顺序、定位器
  XdcMloJ8Eyq9 2023年11月02日 82 0

Qt学习笔记5 布局----- 各种布局、部件大小、可扩展窗口、分裂器、伙伴、Tab键顺序、定位器_设计模式

 

1,常用布局

1)基本布局管理器【QHBoxLayout】

使子部件在水平或者垂直方向排成一列

2)栅格布局管理器【QGridLayout】

将所有的空间分割成一些行和列,行和列的交叉处形成单元格,然后将部件放入一个确定的单元格中。

3)窗体布局管理器【QFormLayout】

管理表单的输入部件以及与它们相关的标签。

4)综合使用布局管理器

 

2,设置部件大小

1)大小提示(setHint),最小大小提示(minimumSizeHint)

setHint:保存部件的建议大小,不同部件,拥有不同的setHint

minimumSizeHint:保存建议的最小大小提示

如果使用setMinimumSize()设置了大小,最小大小提示将会被忽略。

 

大小策略(sizePolicy)【保存了部件的默认布局行为】:在水平和垂直方向起作用,

Qt学习笔记5 布局----- 各种布局、部件大小、可扩展窗口、分裂器、伙伴、Tab键顺序、定位器_设计模式_02

setHint设置为100后,高度并没有达到100,但是将设置setType的Expanding改为Fixed,马上增高了,现在的实际高度才是setHint的高度。

 

2)伸缩因子 (stretch factor)

horizontalLayout设置为(2,1),那么它们的比列为2:1

Qt学习笔记5 布局----- 各种布局、部件大小、可扩展窗口、分裂器、伙伴、Tab键顺序、定位器_设计模式_03

layoutSizeContraint:约束窗口大小,只对顶级布局管理器有用,其他子部件没有用。

Qt学习笔记5 布局----- 各种布局、部件大小、可扩展窗口、分裂器、伙伴、Tab键顺序、定位器_设计模式_04

 

3,可扩展窗口

一个窗口的很多选项是扩充的,只有在必要的时候才显示出来,这时就可以使用一个按钮来显示或者隐藏多余的内容。

先讲文本框隐藏:

ui->textEdit->hide();

把button的选择taggled(bool)的槽信号,

定义其按钮作用:

void mylayout::on_pushButton_toggled(bool checked)
{
ui->textEdit->setVisible(checked);
if(checked) ui->pushButton->setText(tr("隐藏可扩展窗口"));
else ui->pushButton->setText(tr("显示可扩展窗口"));
}

Qt学习笔记5 布局----- 各种布局、部件大小、可扩展窗口、分裂器、伙伴、Tab键顺序、定位器_设计模式_05

 Qt学习笔记5 布局----- 各种布局、部件大小、可扩展窗口、分裂器、伙伴、Tab键顺序、定位器_布局管理器_06

 

4,分裂器(QSplitter)

分类器拥有QWidget的特性,是可见的,而且可以像QFrame一样设置边框。

包含在其中的部件,可以随着分类器的大小变换而变化的。

eg,一个按钮放在布局管理器中,它的垂直方向默认是不会被拉伸的,但是放到分裂器中就可以被拉伸。

应用:

同时选择四个button,然后右键,选择布局-使用分裂器水平布局;

效果图

Qt学习笔记5 布局----- 各种布局、部件大小、可扩展窗口、分裂器、伙伴、Tab键顺序、定位器_可扩展_07

 

5,伙伴

为了方便定位,QLabel提供了一个有用的机制,就是提供助记符来定位键盘焦点到对应的部件上,而这个部件就叫QLabel的伙伴。

助记符:加速符。

使用:

使用英文标签时,在字符串的一个字母前添加“&”符号,就可以指定这个标签的加速键是Alt+  这个字母;

对于中文,需要在小括号中指定一个加速字母,eg(&N)

 操作:

点击编辑伙伴图标进入伙伴设计模式(有一点像书签?一样的图标),

分别将各个标签与它们后面的部件关联起来。

Qt学习笔记5 布局----- 各种布局、部件大小、可扩展窗口、分裂器、伙伴、Tab键顺序、定位器_设计模式_08

6,设置Tab键顺序

 点击编辑Tal图标进入伙伴设计模式(写着123的),

Qt学习笔记5 布局----- 各种布局、部件大小、可扩展窗口、分裂器、伙伴、Tab键顺序、定位器_可扩展_09

点击这些数字,就可以更改顺序。

等价于在MyWidget类的构造函数中使用如下代码:

MyWidget::MyWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::MyWidget)
{
ui->setupUi(this);
//关键代码
setTabOrder(ui->pushButton,ui->checkBox);
}

7,使用定位器

Mac是command+K 

windows是control+K

使用方法:“前缀符号+空格+要定位的内容”

eg.打开定位器后

输入l 8   (第一个是英文字母l和空格和8) ;按下会车就会跳转到编辑模式的第8行

 


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
XdcMloJ8Eyq9