「Qt Widget中文示例指南」如何为窗口实现流程布局?(一)

embedded/2024/11/24 14:33:06/

Qt 是目前最先进、最完整的跨平台C++开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。

本文将展示如何为不同的窗口大小排列小部件。

流程布局实现了处理不同窗口大小的布局,小部件的位置取决于应用程序窗口的宽度。

Flowlayout类主要使用QLayout和QWidgetItem,而Window类使用QWidget和QLabel。

「Qt Widget中文示例指南」如何创建一个窗口标志?(一)

点击获取Qt Widget组件下载

运行示例

要从Qt Creator中运行示例,请打开Welcome模式并从Examples中选择示例。

FlowLayout类定义

FlowLayout类继承了QLayout,它是一个自定义布局类,可以水平和垂直地排列其子部件。

class FlowLayout : public QLayout
{
public:
explicit FlowLayout(QWidget *parent, int margin = -1, int hSpacing = -1, int vSpacing = -1);
explicit FlowLayout(int margin = -1, int hSpacing = -1, int vSpacing = -1);
~FlowLayout();void addItem(QLayoutItem *item) override;
int horizontalSpacing() const;
int verticalSpacing() const;
Qt::Orientations expandingDirections() const override;
bool hasHeightForWidth() const override;
int heightForWidth(int) const override;
int count() const override;
QLayoutItem *itemAt(int index) const override;
QSize minimumSize() const override;
void setGeometry(const QRect &rect) override;
QSize sizeHint() const override;
QLayoutItem *takeAt(int index) override;private:
int doLayout(const QRect &rect, bool testOnly) const;
int smartSpacing(QStyle::PixelMetric pm) const;QList<QLayoutItem *> itemList;
int m_hSpace;
int m_vSpace;
};

我们重新实现了从QLayout继承的函数,这些函数将项目添加到布局中并处理它们的方向和几何形状。

我们还声明了两个私有方法:doLayout() 和 smartSpacing(),doLayout()对布局项进行布局,而smartSpacing()函数计算它们之间的间距。

下期我们将继续介绍FlowLayout类的实现,敬请关注哦......

Qt Widget组件推荐
  • QtitanRibbon - Ribbon UI组件:是一款遵循Microsoft Ribbon UI Paradigm for Qt技术的Ribbon UI组件,QtitanRibbon致力于为Windows、Linux和Mac OS X提供功能完整的Ribbon组件。
  • QtitanChart - Qt类图表组件:是一个C ++库,代表一组控件,这些控件使您可以快速地为应用程序提供漂亮而丰富的图表。
  • QtitanDataGrid - Qt网格组件:提供了一套完整的标准 QTableView 函数和传统组件无法实现的独特功能。使您能够将不同来源的各类数据加载到一个快速、灵活且功能强大的可编辑网格中,支持排序、分组、报告、创建带状列、拖放按钮和许多其他方便的功能。
  • QtitanDocking:允许您像 Visual Studio 一样为您的伟大应用程序配备可停靠面板和可停靠工具栏。黑色、白色、蓝色调色板完全支持 Visual Studio 2019 主题!

http://www.ppmy.cn/embedded/140142.html

相关文章

k8s-NetworkPolicy

NetworkPolicy 是k8s中的网络策略可以限制pod以及namespace之间的访问流量 演示一下名称空间之间基于端口的访问限制 官方对networkpolicy的介绍 官方网址&#xff1a; 网络策略 |Kubernetes &#xff08;简体中文&#xff09; 一&#xff1a;创建NetworkPolicy vim…

Django:从入门到精通

一、Django背景 Django是一个由Python编写的高级Web应用框架&#xff0c;以其简洁性、安全性和高效性而闻名。Django最初由Adrian Holovaty和Simon Willison于2003年开发&#xff0c;旨在简化Web应用的开发过程。作为一个开放源代码项目&#xff0c;Django迅速吸引了大量的开发…

万有引力定律和库仑定律:自然的对称诗篇

万有引力定律和库仑定律&#xff1a;自然的对称诗篇 在宇宙深邃的知识长河中&#xff0c;万有引力定律和库仑定律恰似两颗璀璨的明珠&#xff0c;闪耀着人类智慧与自然奥秘的光辉。 十七世纪&#xff0c;牛顿在对天体运行的深邃思索中&#xff0c;拨开重重迷雾&#xff0c;发现…

k8s篇之控制器类型以及各自的适用场景

1. k8s中控制器介绍 在 Kubernetes 中,控制器(Controller)是集群中用于管理资源的关键组件。 它们的核心作用是确保集群中的资源状态符合用户的期望,并在需要时自动进行调整。 Kubernetes 提供了多种不同类型的控制器,每种控制器都有其独特的功能和应用场景。 2. 常见的…

在Ubuntu系统中制作系统启动u盘

2024-11&#xff1a;用Ubuntu系统一段时间后&#xff0c;编程体验很好&#xff0c;命令行尤其好用。时间一长&#xff0c;考虑到Windows系统里面丰富的软件生态&#xff0c;还是颇为割舍不下&#xff0c;本来想着再买个主机&#xff0c;但是考虑到成本问题&#xff0c;还是给笔…

Linux|环境变量

目录 前言 Main参数—命令行参数 命令行解释器&#xff1a;bash 认识环境变量 环境变量的作用 环境变量命令行操作 代码获取环境变量的用法 环境变量表 环境变量的存放 前言 环境变量是一个系统预定义的全局参数&#xff0c;系统自己开辟空间&#xff0c;将它存在于所…

海洋通信船舶组网工业4G路由器应用

船舶是浩瀚海洋中探索与贸易的载体&#xff0c;更是船员们生活与工作的家园。为了在广阔的水域中搭建起稳定、高效的网络桥梁&#xff0c;工业4G路由器以卓越的通信组网能力&#xff0c;为船舶组网提供网络支持。 工业4G路由器以其强大的信号发射能力&#xff0c;确保船舶内部…

Spark 分布式计算中网络传输和序列化的关系(二)

在 Spark 分布式计算 中&#xff0c;网络传输和序列化是数据处理的重要组成部分。Spark 通过将任务划分为多个分布式计算节点来处理数据&#xff0c;而序列化和网络传输直接影响计算性能和数据交互效率。 1. 序列化在 Spark 中的作用 序列化是 Spark 将数据对象转换为字节流以…