一、导读
在使用Qt开发界面的时候,大小限定是常使用的操作。在界面元素的鼻祖QWidget中提供了一系列的方法,用于设定指定元素的大小或者最小/最大的大小:
//设置最大高度 voidsetMaximumHeight(intmaxh) //设置最大大小 voidsetMaximumSize(constQSize&) //设置最大大小(包含最大宽度、最大高度) voidsetMaximumSize(intmaxw,intmaxh) //设置最大宽度 voidsetMaximumWidth(intmaxw) //设置最小高度 voidsetMinimumHeight(intminh) //设置最小大小 voidsetMinimumSize(constQSize&) //设置最小大小(包含最小宽度、最小高度) voidsetMinimumSize(intminw,intminh) //设置最小宽度 voidsetMinimumWidth(intminw) //设置固定高度 voidsetFixedHeight(inth) //设置固定宽度 voidsetFixedWidth(intw) //设置固定大小 voidsetFixedSize(constQSize&s) //设置固定大小(包含固定宽度和高度) voidsetFixedSize(intw,inth)
上述的成员函数,功能与名称描述一致。
在不同显示屏大小的平台下,或者需要开发自适应大小的应用窗体时,大小限定是必备的操作。
二、大小限定背后的设计思路
如果应用程序的界面窗体大小在实际开发中大小是不变的,就需要使用setFixedxxx函数将窗体设置为固定的大小,不然,在鼠标拖动的情况下,且窗体中的各界面控件没有设计自适应,则会出现窗体填充不满或者多控件之间彼此覆盖的情况,例如如果使用《Qt这四种设置窗体背景的方法,都知道吗?》一文中所述的QPalette方法设置了背景图:
Widget::Widget(QWidget*parent) :QWidget(parent), ui(newUi::Widget) { ui->setupUi(this); QPalettepalette=this->palette(); palette.setBrush(QPalette::Window,QBrush(QPixmap(":/images/bk.png"))); this->setPalette(palette); }
这时候拖动鼠标,则会出现下图所示效果:
如果使用QLabel方法设置背景图:
ui->label->setPixmap(QPixmap(":/images/bk.png"));
则会出现下图所示效果:
综上,开发不需要自适应的窗体界面时,为了不影响应用软件的界面窗体中呈现内容的效果,设置窗体的大小是必要的。
如何设置窗体或者窗体中的界面控件的大小呢?有两种方法:
(1)在代码中使用大小限定函数进行设置。
(2)在Qt Designer中选中需要设置的界面控件对象,右键单击,在弹出的对话框中选择“大小限定”下的选项。
自适应的窗体开发,需要使用Qt提供的布局器(QBoxLayout、QFormLayout、QGridLayout和QStackedLayout)来完成,在代码中可以直接进行布局描述。当然,使用Qt Designer能够进行自适应窗体的快速开发,特别是垂直Spacer和水平Spacer这两个辅助控件在自适应窗体开发中特别好用。
三、小生总结
(1)在开发自适应的应用窗体时,在使用布局器进行布局后,如果窗体大小发生改变,可能窗体中的子控件大小会受到影响(发生大小变换),这时候限定子控件的大小是必须的。
(2)在布局的时候,合理设置Spacer的sizeType属性,往往可以达到我们想要的布局效果。
(3)在使用QLabel显示文本的时候,QLabel大小需要预先评估,否则太长的字符串无法显示。
审核编辑:汤梓红
-
界面
+关注
关注
0文章
59浏览量
15620 -
函数
+关注
关注
3文章
4327浏览量
62571 -
代码
+关注
关注
30文章
4779浏览量
68524 -
Qt
+关注
关注
1文章
302浏览量
37899 -
窗体
+关注
关注
0文章
10浏览量
1463
发布评论请先 登录
相关推荐
评论