# .clang-format
# 这是一个尝试接近 Qt 风格的配置。
# Qt 的风格比较独特，可能需要结合 Clang-Format 的其他选项和手动调整。

BasedOnStyle: Google # Google 风格的控制流大括号是同行的，作为起点。
# 也可以尝试 BasedOnStyle: LLVM

IndentWidth: 4
UseTab: Never
ColumnLimit: 120 # 建议行宽

# Qt 类和函数的大括号在新行，控制流语句的大括号同行。
# Clang-Format 的 BreakBeforeBraces 选项很难完美匹配这种混合风格。
# AttachStyle: 用于控制流语句的大括号行为，通常与 K&R 风格（同行）一致。
# 对于类和函数，你可能需要更复杂的 Clang-Format 配置，或者接受一点偏差。
# 默认的 BasedOnStyle: Google 或 LLVM 已经把控制流语句的大括号放在同行了。

BreakBeforeBraces: Attach # 用于 if/for/while 等控制流语句，使其大括号与语句同行

# 对于类、函数、命名空间等大括号的控制：
# Qt 风格中，类、函数、命名空间的大括号是新一行的。
# Clang-Format 没有一个直接的 BreakBeforeBraces 选项来完美匹配这种组合。
# Default/Custom 会根据情况进行调整。
# 通常，当你设置 BreakBeforeBraces: Attach 时，类和函数的大括号会默认在新行。
# 这是一个需要你测试和验证的部分。

AlignTrailingComments: true # 尾随注释的对齐

# 指针/引用符
PointerAndReferenceBindsToType: false # * 和 & 紧贴变量名 (e.g., int *x)
# 或 true 如果你喜欢紧贴类型 (e.g., int* x)，Qt 官方更常用前者，但后者也常见。
# 注意：Qt 官方指南里是这样写的：`char *ptr;` 但实际代码中 `char* ptr;` 也大量存在。

# 其他常见的 Q_PROPERTY 相关的对齐
AllowShortBlocksOnASingleLine: Empty # {} 可以放在一行

# 确保在项目中安装了 Clang-Format VS Code 扩展，并设置为保存时格式化。