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() 在新行中添加一个标签和一个小部件。标签通常用于描述或指示字段的目的。

QFormLayoutinsertRow() 函数用于在表单布局中的特定位置插入一行。这与 addRow() 函数相比,提供了更多的控制,允许你指定新行插入的确切位置。addRow() 函数总是在布局的末尾添加新行

在行号 row 处插入一个标签(文本为 labelText)和一个字段小部件 field

& 符号前缀在字符串文字前,这通常意味着这个字符串会被用作快捷键。

  • 参数: index - 布局中项的索引(从 0 开始)。
  • 返回值: 返回一个指向布局中第 indexQLayoutItem 的指针。如果索引超出范围,则返回 nullptr

文章来源:https://blog.csdn.net/b1169909203/article/details/135280215
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。