Qt FlowLayout升级版

文章目录

  • Qt FlowLayout升级版
    • 简述
    • 效果图
    • 核心代码
    • QQ群
    • 结尾

简述

最近因为工作需要,在flowlayout流布局上改进了下。专业词语不知道怎么称呼,暂且称为紧凑型布局吧。看看效果图

效果图

核心代码

int itemSize = itemList.size();for (int i = 0; i < itemSize; i++) {QWidget *wid = itemList[i]->widget();int spaceX = horizontalSpacing();if (spaceX == -1)spaceX = wid->style()->layoutSpacing(QSizePolicy::PushButton, QSizePolicy::PushButton, Qt::Horizontal);int spaceY = verticalSpacing();if (spaceY == -1)spaceY = wid->style()->layoutSpacing(QSizePolicy::PushButton, QSizePolicy::PushButton, Qt::Vertical);
//! [10]
//! [11]
//!if(itemList[i]->sizeHint().height() == 0) continue;int nextX = x + itemList[i]->sizeHint().width() + spaceX;int nextY = y;if(x > effectiveRect.x()){nextX = x;nextY = y + itemList[i]->sizeHint().height() + spaceY;if(nextY - spaceY >= preY + lineHeight && lineHeight > 0 && lineWidth > 0){x = x + lineWidth + spaceX;y = preY;nextX = x;nextY = y + itemList[i]->sizeHint().height() + spaceY;lineWidth = 0;}lineWidth = qMax(lineWidth, itemList[i]->sizeHint().width());}if (nextX + itemList[i]->sizeHint().width() > effectiveRect.right() && lineHeight > 0) {x = effectiveRect.x();y = preY + lineHeight + spaceY;preY = y;nextX = x + itemList[i]->sizeHint().width() + spaceX;nextY = y;lineHeight = 0;lineWidth = 0;}if (!testOnly){itemList[i]->setGeometry(QRect(QPoint(x, y), itemList[i]->sizeHint()));}lineHeight = qMax(lineHeight, itemList[i]->sizeHint().height());x = nextX;y = nextY;}

QQ群

Qt交流大会 853086607 (收费群,用于后期升级群费用)

结尾

不定期上传新作品,解答群中作品相关问题。相关外,能解答则解答。欢迎大家一起探索Qt世界!相关工程,可以联系博主雨田哥:3246214072

Qt FlowLayout升级版相关推荐

  1. Qt FlowLayout布局

    01 开发过程中用到了动态加载控件的操作 02 问题是每个控件的要显示的文本信息长度不同,造成控件宽度不同 03 搜索一番,发现了好用的FlowLayout布局 04 简单说,他可以将控件一个挨一个排 ...

  2. Qt之流式布局(FlowLayout)

    简述 有时候我们希望窗口内的布局随着窗口大小的改变而自动调整,这就是流式布局(FlowLayout)的作用. 流式布局会根据窗口的尺寸来自动调整控件布局,控件的排布会随着窗口宽度的变化而变化. 使用 ...

  3. qt在window实现调取本机摄像头或者外设摄像头二维码识别升级版

    之前发过一个帖子,后来发现有很多bug,不得已又研究了几天, 升级了这一版本,比之前好多了,bug也完美解决,但只是在我应用上解决,相对于大多数人来说还是未知的,看你们个人需求,希望能帮助到你们.话不 ...

  4. 微信打飞机升级版(Qt实现)

    今天分享一个我用Qt改写的微信打飞机游戏,程序重在设计过程,运用了(抽象)工厂的模式产生不同的对象(子弹,敌军,炸弹...),逻辑处理相对简单,尚未解决的问题是怎么使用Qt实现各种声音的混音效果,这里 ...

  5. Qt分析:Qt中的两种定时器

    QTimer类的定时器 QTimer类定时器是QObject类定时器的扩展版或者说升级版,因为它可以提供更多的功能.比如说,它支持单次触发和多次触发. 使用QTimer类定时器的步骤: (1)创建一个 ...

  6. Qt 中容器类型的控件

    转载:https://subingwen.cn/qt/qt-containers/ 1.QWidget 这个类是所有窗口类的父类,可以作为独立窗口使用,也可以内嵌到其它窗口中使用. Qt 中的所有控件 ...

  7. 快速实现B站(B ili b ili)手机缓存m4s文件转mp4(批量升级版)

    经过几天奋战,终于应朋友要求,开发出了升级版的B站缓存m4s转mp4软件,这次功能更强大,操作更便捷.适合很多个缓存一起转,不用一个一个点了. 先看一下界面: 只要对着文件双击,就可以自动转换,而且是 ...

  8. Qt学习之界面UI编程应用

    Qt作为c++的GUI编程框架,在Qt4时代,一直是传统的基于QtWidget的C++编程,而到了Qt5,为了适用当前的移动应用开发浪潮,Qt提供了,另一套界面框架QtQuick,它是基于QML语言( ...

  9. Qt - 换肤功能实现

    文章目录 前言 Qt内置风格 QPalette QSS QSS样式 一般样式 选择器 子控件 伪状态 属性 使用 分离QSS 推荐工具 Qsseditor QssStylesheetEditor QS ...

  10. Qt QTableWidget表格控件的用法(非常详细)

    Qt QTableWidget表格控件的用法(非常详细) QTableWidget 是 Qt 提供的一种表格控件(如图 1 所示),类似于我们经常使用的 Excel 表格,可以将数据以表格的方式展示给 ...

最新文章

  1. VC使用ActiveX控件常见问题
  2. leetcode算法题--斐波那契数列
  3. cxf 发布 一个简单的 webservice
  4. docker与kuberentes基本概念与操作学习
  5. 【绝对有用】Syntax error on token “throws“, @ expected after this token
  6. SQL触发器实例讲解
  7. java 多线程的同步问题_java多线程解决同步问题的几种方式,原理和代码
  8. 毕业生该不该做软件开发这一行?
  9. 利用c语言面向对象编程,用C语言程序实现面向对象编程
  10. svg实现loading效果
  11. 【2016.4.6】结对编程 第二章 基础设计
  12. 配电网重构知识及matlab实现
  13. 文档转换工具 —— 你还在为wps的word转pdf上限五页而苦恼吗?
  14. webstorm+vue组件开发准备
  15. Python数据分析-绘图-2-Seaborn进阶绘图-4-分类图
  16. 展讯sprd_battery.c 充电驱动
  17. Python实验、函数和代码复用
  18. 2019年小程序发展优势
  19. python入侵手机_Python-Iocextract:高级入侵威胁标识符IoC提取工具
  20. 玩转华为数据中心交换机系列 | 配置基于子网划分VLAN示例

热门文章

  1. 张小龙2019微信公开课演讲实录
  2. 拜托,请给我贫寒简单的生活!
  3. 电子邮箱免费注册,比较好用的电子邮箱怎么注册?如何申请?
  4. 上海牌照(沪牌)拍牌,软件,手动
  5. (转)原子时代来临-Intel革命性Atom透析
  6. 什么是云计算中的SaaS(软件即服务)?
  7. 笔记︱盘点实验科学的三种实验模型(A/B实验、因果推断、强化学习)
  8. 前端接收java后端返回base64二进制流下载mp4
  9. 密码学算法——RSA
  10. 年度总结 | 回味2022不平凡的一年