QLayout布局器QObject子节点遍历
2023-12-29 18:26:26
遍历QObject的子节点
#include <QObject>
#include <QDebug>
void printObjectTree(const QObject *object, int level = 0) {
if (!object) return;
// 创建缩进字符串,用于表示层级
QString indent(level * 2, ' ');
// 打印对象的类名和对象名
qDebug() << indent << object->metaObject()->className() << object->objectName();
// 递归遍历所有子对象
const QObjectList &children = object->children();
for (const QObject *child : children) {
printObjectTree(child, level + 1);
}
}
// 使用示例
// 假设有一个 QObject 的实例,名为 root
printObjectTree(root);
布局Layout
源码
尺寸策略
- left: 小部件左侧的边距宽度。
- top: 小部件顶部的边距宽度。
- right: 小部件右侧的边距宽度。
- bottom: 小部件底部的边距宽度。
- horizontal: 水平方向的大小策略。
- vertical: 垂直方向的大小策略。
每个参数都是QSizePolicy::Policy
类型,这是一个枚举,包括了各种策略,如:
Fixed
(固定):小部件有一个固定大小,不能被调整。Minimum
(最小):小部件可以变大,但不可以比其大小提示小。Maximum
(最大):小部件可以变小,但不可以比其大小提示大。Preferred
(首选):小部件首选其大小提示的大小,但可以被缩小或扩展。Expanding
(扩展):小部件扩展以填充所有可用空间。
常用三种
设置最大和最小尺寸
常用接口
QFormLayout
- 参数:
labelText
- 作为标签的文本。field
- 与标签相关联的字段小部件。
- 用法: 这种形式的
addRow()
在新行中添加一个标签和一个小部件。标签通常用于描述或指示字段的目的。
QFormLayout
的 insertRow()
函数用于在表单布局中的特定位置插入一行。这与 addRow()
函数相比,提供了更多的控制,允许你指定新行插入的确切位置。addRow()
函数总是在布局的末尾添加新行
在行号 row
处插入一个标签(文本为 labelText
)和一个字段小部件 field
&
符号前缀在字符串文字前,这通常意味着这个字符串会被用作快捷键。
- 参数:
index
- 布局中项的索引(从 0 开始)。 - 返回值: 返回一个指向布局中第
index
个QLayoutItem
的指针。如果索引超出范围,则返回nullptr
文章来源:https://blog.csdn.net/b1169909203/article/details/135280215
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!