Qt Creator制表符设置求助:多基类与Lambda格式化异常
Qt Creator代码格式化异常解决方案(多基类与Lambda场景)
问题重现
多基类继承格式异常
初始正常代码:
template <size_t bits> struct type_from_bits<bits, false, estd::internal::Range<(bits <= 8)>> : estd::type_identity<uint8_t> { };
添加第二个基类后格式异常:
template <size_t bits> struct type_from_bits<bits, false, estd::internal::Range<(bits <= 8)>> : estd::type_identity<uint8_t>, internal::type_from_bits_base<bits> { };
Lambda参数格式异常
调用函数传入Lambda时,Lambda体出现过度缩进、错位的问题,与上述基类格式异常表现一致。
解决方案
1. 切换默认格式化工具为ClangFormat
在Qt Creator中操作:
- 打开
工具 -> 选项 -> C++ -> 代码风格 -> 格式化 - 将默认格式化器设置为
ClangFormat,禁用Qt Creator自带的格式化器
2. 自定义ClangFormat配置
在项目根目录创建.clang-format文件,写入针对问题优化的配置:
BasedOnStyle: LLVM # 解决换行后过度缩进问题 AlignAfterOpenBracket: DontAlign # 统一续行缩进宽度 ContinuationIndentWidth: 4 # 禁用自动推导指针对齐,避免格式冲突 DerivePointerAlignment: false PointerAlignment: Left # 统一Lambda体缩进宽度 LambdaBodyIndentation: 4 # 关闭连续声明对齐,避免额外错位 AlignConsecutiveDeclarations: false
3. 同步制表符与空格设置
打开工具 -> 选项 -> C++ -> 代码风格 -> 制表符:
- 勾选
替换制表符为空格 - 设置
缩进宽度和制表符宽度为4(与ClangFormat的ContinuationIndentWidth保持一致)
效果验证
多基类继承格式化后
template <size_t bits> struct type_from_bits<bits, false, estd::internal::Range<(bits <= 8)>> : estd::type_identity<uint8_t>, internal::type_from_bits_base<bits> { };
Lambda参数格式化后
示例代码格式化效果:
some_function([&]() { do_something(); another_operation(); });
内容的提问来源于stack exchange,提问作者Malachi
相关产品推荐
相关产品推荐

