0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Qt“大小限定”背后的思路和“坑”

嵌入式小生 来源:嵌入式小生 2023-02-02 10:16 次阅读

一、导读

在使用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);
}

这时候拖动鼠标,则会出现下图所示效果:f5af83f6-a299-11ed-bfe3-dac502259ad0.gif

如果使用QLabel方法设置背景图:

ui->label->setPixmap(QPixmap(":/images/bk.png"));

则会出现下图所示效果:

f602f1bc-a299-11ed-bfe3-dac502259ad0.gif

综上,开发不需要自适应的窗体界面时,为了不影响应用软件的界面窗体中呈现内容的效果,设置窗体的大小是必要的。

如何设置窗体或者窗体中的界面控件的大小呢?有两种方法:

(1)在代码中使用大小限定函数进行设置。

(2)在Qt Designer中选中需要设置的界面控件对象,右键单击,在弹出的对话框中选择“大小限定”下的选项。

f63cc3a6-a299-11ed-bfe3-dac502259ad0.png

自适应的窗体开发,需要使用Qt提供的布局器(QBoxLayoutQFormLayoutQGridLayoutQStackedLayout)来完成,在代码中可以直接进行布局描述。当然,使用Qt Designer能够进行自适应窗体的快速开发,特别是垂直Spacer和水平Spacer这两个辅助控件在自适应窗体开发中特别好用。

三、小生总结

(1)在开发自适应的应用窗体时,在使用布局器进行布局后,如果窗体大小发生改变,可能窗体中的子控件大小会受到影响(发生大小变换),这时候限定子控件的大小是必须的。

(2)在布局的时候,合理设置Spacer的sizeType属性,往往可以达到我们想要的布局效果。

f668e0bc-a299-11ed-bfe3-dac502259ad0.png

(3)在使用QLabel显示文本的时候,QLabel大小需要预先评估,否则太长的字符串无法显示。


审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    4329

    浏览量

    62576
  • 应用程序
    +关注

    关注

    37

    文章

    3267

    浏览量

    57684
  • Qt
    Qt
    +关注

    关注

    1

    文章

    302

    浏览量

    37899

原文标题:学Qt,“大小限定”背后的思路和“坑”

文章出处:【微信号:嵌入式小生,微信公众号:嵌入式小生】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    QT串口通信的简单使用

    QT串口通信是上位机和下位机通信常用的通信方式, 也是学习QT必须学会的基础知识, 这篇就简单介绍一下QT串口通信的简单使用.
    的头像 发表于 01-15 09:27 1980次阅读
    <b class='flag-5'>QT</b>串口通信的简单使用

    你的DIY背后有什么故事?

    的夜里感叹我上辈子是不是个折翼的天使,不然怎么会染上了爱拆东西的毛病。后来上大学,进了电子的,才发现每个同学身上都有伤痕,”这是我拆我家收音机时被我爸打的。“ ”我靠你爸下手真重,我拆了电视机也才被我
    发表于 04-28 20:45

    IAP思路和代码以及细节和遇到的地方记录

    和20K的RAM,也有小道说有后置隐藏的64K,也就是说其实是有128K,我一直也没有测试,有空测测,有大神这样说,估计是可以的。这里重点记录一下我写的IAP思路和代码以及细节和遇到的地方。先大体的概...
    发表于 08-23 07:15

    基于Qt/Embedded的嵌入式控制界面开发

    作者通过结合Qt/Embedded的特性和优点,提出用Qt/Embedded实现风力发电控制系统的图形界面的思路和设计原则,重点介绍了在嵌入式Linux内核基础上Qt/Embedded
    发表于 08-12 10:14 49次下载

    分析QT3与QT4中uic的使用差异

    1、QT3在QT3中,用designer设计
    发表于 08-25 11:52 1292次阅读

    Qt快速入门手册

    介绍了在ubuntu系统中安装qt以及qt的基本使用
    发表于 06-14 16:05 34次下载

    什么是Qt?Qt 5的安装和开发步骤及实例及概念解析

    Qt最早是在1991年由奇趣科技开发的,1996年进入商业领域,成为全世界范围内数千种成功的应用程序的基础。它也是目前流行的Linux桌面环境KDE的基础,KDE是Linux发行版的主要一个标准组件
    发表于 08-01 08:00 0次下载
    什么是<b class='flag-5'>Qt</b>?<b class='flag-5'>Qt</b> 5的安装和开发步骤及实例及概念解析

    树莓派上安装qt

    在树莓派上安装了官方的raspbian系统。为了在能在上面开发程序,在系统上安装了qt4 。参考链接http://qt-project.org/wiki
    发表于 04-02 14:41 1121次阅读

    OPPO手环EVA限定版解析

    不久前,OPPO在推出EVA限定版系列新品时就公布了OPPO手环的EVA限定版。OPPO手环EVA限定版定于7月9日10点发售,定价为299元。本期开箱上手视频中我们就来为大家来提前看看OPPO手环EVA
    发表于 07-15 14:05 2895次阅读

    推荐使用QT5.14或者QT5.15版本 不要急着升级到QT6

      推荐使用QT5.14或者QT5.15版本,不建议升级最新版的QT6,很多你要的功能没了,特别是开发上位机需要的模块没了。 Qt 6.0 中已移除的模块,以下是不在
    的头像 发表于 01-26 16:37 4.8w次阅读

    Qt Designer、Qt Quick Designer和Qt Creator应用程序有什么区别?

    不管是Qt新手还是开发过qt的群体来说,对Qt Designer、Qt Quick Designer、Qt Creator这几个应用程序肯定
    的头像 发表于 03-17 09:40 7254次阅读

    Qt,“大小限定背后思路和“

    在使用Qt开发界面的时候,大小限定是常使用的操作。在界面元素的鼻祖QWidget中提供了一系列的方法,用于设定指定元素的大小或者最小/最大的大小
    的头像 发表于 02-02 10:31 1394次阅读

    Qt“灵魂”之Meta-Object系统

    Meta-Object即是Qt的元对象系统,下文都以元对象系统进行描述。在Qt中,具有标志性特征的则是信号和槽函数机制,该机制的背后实现本质上则是元对象系统。编写Qt代码的时候,在定义
    的头像 发表于 02-10 13:50 1944次阅读

    基于Qt 5.15源码来聊聊隐式共享

    在实际开发中,Qt中很多类可以直接作为函数参数传递,这是为什么?其背后的实现机制又是什么?这些都归功于隐式共享
    的头像 发表于 02-12 16:52 789次阅读

    QTQT上位机串口编程

    QTQT上位机串口编程 最近因为项目需要,需要用到上位机,通过串口与上位机进行通讯,来上传和下发一些数据以及控制指令,所以用QT写了一个上位机,并记录下来,免得到时候要用又到处翻资料。
    发表于 05-08 10:02 25次下载
    <b class='flag-5'>QT</b>篇<b class='flag-5'>QT</b>上位机串口编程