zl程序教程

您现在的位置是:首页 >  工具

当前栏目

Qt之自定义布局管理器(QCardLayout)

Qt 自定义 布局 管理器
2023-09-11 14:19:16 时间

下面我们详细来举一个例子-QCardLayout。它由同名的Java布局管理器启发而来。也被称之为卡片布局,每个项目偏移QLayout::spacing()。


一种存储布局处理项目的数据结构,每个项目都是一个QLayoutItem,本例使用QList。

addItem() 如何添加项目布局。

setGeometry() 如何控制布局。

sizeHint() 布局的优选大小。

itemAt() 如何遍历布局。

takeAt() 如何删除布局中的项目。

大多数情况下,也会实现的minimumSize()。


// 由于QLayoutItem不继承自QObject,必须手动删除。在析构函数中,使用takeAt()删除列表中的每个项目,然后将其删除。 QCardLayout::~QCardLayout() QLayoutItem *item; while ((item = takeAt(0))) delete item; // 获取列表中的项目数 int QCardLayout::count() const return list.size(); // 获取索引idx所对应的项目 QLayoutItem *QCardLayout::itemAt(int idx) const return list.value(idx); // 移除索引idx所对应的项目,并返回 QLayoutItem *QCardLayout::takeAt(int idx) return idx = 0 idx list.size() ? list.takeAt(idx) : 0; // 添加项目 void QCardLayout::addItem(QLayoutItem *item) list.append(item); // 实际控制着布局,作为参数提供的矩形不包括margin()。相关的,使用spacing()作为项目之间的距离。 void QCardLayout::setGeometry(const QRect r) QLayout::setGeometry(r); if (list.size() == 0) return; int w = r.width() - (list.count() - 1) * spacing(); int h = r.height() - (list.count() - 1) * spacing(); int i = 0; while (i list.size()) { QLayoutItem *o = list.at(i); QRect geom(r.x() + i * spacing(), r.y() + i * spacing(), w, h); o- setGeometry(geom); ++i; // sizeHint()和minimumSize()通常非常相似。这两个函数返回的尺寸应包括spacing(),但不包括margin()。 QSize QCardLayout::sizeHint() const QSize s(0,0); int n = list.count(); if (n 0) s = QSize(100,70); int i = 0; while (i n) { QLayoutItem *o = list.at(i); s = s.expandedTo(o- sizeHint()); ++i; return s + n*QSize(spacing(), spacing()); QSize QCardLayout::minimumSize() const QSize s(0,0); int n = list.count(); int i = 0; while (i n) { QLayoutItem *o = list.at(i); s = s.expandedTo(o- minimumSize()); ++i; return s + n*QSize(spacing(), spacing()); }
C/C++ Qt 自定义Dialog对话框组件应用 在上一篇博文 `《C/C++ Qt 标准Dialog对话框组件应用》` 中我给大家演示了如何使用Qt中内置的标准对话框组件实现基本的数据输入功能。
C/C++ Qt MdiArea 多窗体组件应用 MDI多窗体组件,主要用于设计多文档界面应用程序,该组件具备有多种窗体展示风格,其实现了在父窗体中内嵌多种子窗体的功能,使用MDI组件需要在UI界面中增加mdiArea控件容器,我们所有的窗体创建与操作都在这个容器内进行,如下我们将具体介绍该组件的常用使用技巧。
C/C++ Qt ListWidget 列表框组件应用 ListWidget列表框组件,该组件与TreeWidget有些相似,区别在于TreeWidget可以实现嵌套以及多字段结构,而ListWidget组件则只能实现单字段结构,ListWidget组件常用于显示单条记录,例如只显示IP地址,用户名等数据,如下笔记是本人在开发中经常用到的一些基本操作技巧,包括列表框组件的基本操作方法。
QT TextEdit控件 全面详解 本文详细的介绍了TextEdit控件的各种操作,例如:获取内容、输入控件字符、保持在最后一行添加(自动滚屏)、定时关闭、添加数据换行、向鼠标位置插入一行字符、设置字体颜色属性等操作。 本系列QT全面详解文章目前共有十五篇,本系列文章较为详细的讲述了QT控件的基础操作和使用,也谢谢大家的关注、点赞、收藏。