起因在于习惯性的想格式化代码,发现Qt Creater默认居然是没有代码格式化的,只有一个缩进,搞毛线啊!!!

搜索了下,倒是很容易就搜到了,Qt Creater中有个插件:beautifier,在 帮助-关于插件 中开启了即可(需要重启)。

可惜这只是一个接口,它的作用是调用格式化工具进行格式化。--这一点折腾了两个小时才意识到!惨痛的教训告诉我们,一定要看官方文档,别老想着走捷径!

按照官方的说法,它支持三种外部工具:Artistic Style、ClangFormat、Uncrustify 。并且都提供了下载地址。

这里仅以 ClangFormat 来说明。

ClangFormat 是LLVM的一个子功能,LLVM是类似GCC的东西。

所以,想用 ClangFormat ,就需要下载LLVM,根据上面的地址,搜索适合自己的版本即可。我这里是win64位的。

安装的时候PATH选项无所谓,因为Qt Creater的beautifier Clang Format  选项中既可以根据PATH搜索,也可以自行指定路径。

安装好LLVM之后,就可以设置 Clang Format 选项了。

先配置路径(如:C:\Program Files\LLVM\bin\clang-format.exe );

再选择代码样式,默认有LLVM、Google、Chromium、Mozilla、WebKit、File,此外还可以自定义。

默认样式,需要重点说一下File -- 因为其他的样式都是给定的样式,而 File 则不是。

File clang-format.exe -style=file 的意思,意味着 clang-format.exe 会去搜索样式文件( *.clang-format 文件)。

需要注意的是,它的搜索路径是当前文件所在的文件夹或者当前项目(不知道是否会继续往上层搜索--至少,工作空间就没验证成功)。

这样的话,它要求把 .clang-format 文件放在项目文件夹中,与我的习惯不符。

自定义样式

所幸,还有一个选择:Use customized style - add

如下

Value 部分内容如下

AccessModifierOffset: 0
AlignEscapedNewlinesLeft: false
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortFunctionsOnASingleLine: false
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: false
BinPackParameters: false
BreakBeforeBinaryOperators: false
BreakBeforeTernaryOperators: false
BreakConstructorInitializersBeforeComma: false
ColumnLimit: 128
BreakBeforeBraces: Attach
CommentPragmas: ''
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 0
ContinuationIndentWidth: 0
Cpp11BracedListStyle: false
DerivePointerBinding: false
IndentCaseLabels: true
IndentFunctionDeclarationAfterType: false
IndentWidth: 4
Language: Cpp
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCSpaceAfterProperty: true
ObjCSpaceBeforeProtocolList: true
ObjCBlockIndentWidth: 4
PenaltyBreakBeforeFirstCallParameter: 100
PenaltyBreakComment: 100
PenaltyBreakFirstLessLess: 0
PenaltyBreakString: 100
PenaltyExcessCharacter: 1
PenaltyReturnTypeOnItsOwnLine: 20
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInCStyleCastParentheses: false
SpacesInContainerLiterals: false
SpacesInParentheses: false
TabWidth: 4
UseTab: Never

ps:上面这段配置是搜来的,忘了出处了~

使用

工具-Beautifier-ClangFormat 里面有两个选项,分别是格式化当前文件格式化选定内容

但是,这样使用很繁琐,很难用。所以最好给它设置一个快捷键,我的是ALT+CTRL+L(intellij的快捷键)。

注意,ClangFormat 有个特殊的选项 Format entire file if no text was selected ,建议选中这个选项,这样,只需要设置一个Format Selected Text 快捷键即可。

参考:

Beautifying Source Code

Clang-Format Style Options

Qt Creater中Clang-format的使用的更多相关文章

  1. Qt Creater中的.pro文件和.pri文件

    初学Qt,使用Qt Creater打开Demo "QT 3D Basic Shapes C++ Example",发现除了pro文件外,还有一个pri文件,在此小白一下! *.pr ...

  2. QT5.8+vs2015配置以及qt creater中出现中文乱码解决办法之一

    1.参考此文档:QT5.6+vs2015配置: 2.出现乱码问题时候 在头文件上加入: #pragma execution_character_set("utf-8") //加入这 ...

  3. 在Xcode中使用Clang Format

    Xcode中的Re-Indent,顾名思义,只是一个调整缩进的功能,完全依赖它来进行代码格式化显然不够用.我们使用了一个叫做ClangFormat-Xcode的插件,配合Re-Indent一起来做代码 ...

  4. clang format 官方文档自定义参数介绍(中英文)

    官方文档:http://clang.llvm.org/docs/ClangFormatStyleOptions.html 中文 在代码中配置样式 当使用 clang::format::reformat ...

  5. Qt 5中信号和槽的新语法

    QT 是一个跨平台的 C++ GUI 应用构架,它提供了丰富的窗口部件集,具有面向对象.易于扩展.真正的组件编程等特点,更为引人注目的是目前 Linux 上最为流行的 KDE 桌面环境就是建立在 QT ...

  6. QT Creater 配色方案及下载

    打开QT Creater的工具--选项--文本编辑器--字体和颜色,复制一份配色方案:Vim (dark) ->Vim (dark) (copy) 更改想更改的任何内容的配色.其中,修改后的文件 ...

  7. Qt 4.8.5 + MinGW32 + Qt creater 安装

    Qt 4.8.5 + MinGW32 + Qt creater 安装 下载文件 文件版本 Qt 4.8.5 MinGW 0.4.4 Qt Creator 2.8或2.8.1 gdb-7.4-MinGW ...

  8. QT程序中显示中文字体解决办法

    Qt4.7.1 默认没有中文字体库,迅为给用户提供“文泉驿”字体和配置方法.本节需要的 文件在网盘: 用一个简单测试程序说明“文泉驿”字体的配置方法. 在 Qt Creater 新建工程“nihao” ...

  9. 1.1 Qt Creater使用Python开发桌面软件的操作流程

    Qt Creater及Python的下载与安装过程不再赘述,读者可自行在网上搜索相应的下载与安装方法. 首先我们打开Qt Creater,单击"Create Project"按钮或 ...

随机推荐

  1. iOS8开发之iOS8的UIAlertController

    在iOS8之前用UIActionSheet和UIAlertView来提供button选择和提示性信息,比方UIActionSheet能够这样写: UIActionSheet *actionSheet ...

  2. js调用父级frame中的方法

    父级frame中的方法: function hideOutline() { $("#outline").hide(); $("#content").attr(& ...

  3. 使用SQL语句的子查询批量复制表数据

    批量复制表数据这里有两种方法,下面分别来介绍这两种方法: 一.手动创建新表,然后复制数据 如果是要复制整个表的话,可以使用SQL SERVER自动生成CREATE脚本: 然后在脚本中改改表名就可以了, ...

  4. 完美解决 IOS系统safari5.0 浏览器页面布局iframe滚动栏失效问题

    在iframe外层包一层div,加入例如以下样式: style="-webkit-overflow-scrolling:touch;overflow:auto;" 代码例如以下: ...

  5. 解决Pycharm中module 'pip' has no attribute 'main'的问题

    背景:pip升级至10.0.1后,使用Pycharm安装Package时一直提示module 'pip' has no attribute 'main'报错信息. 解决方法: 找到Pycharm安装目 ...

  6. Cocos2d-x和时间有关的代码

    用cocos2d-x获取系统时间,格式为年月日时分秒: void GetTime(float dt) { struct tm *tm; #if (CC_TARGET_PLATFORM == CC_PL ...

  7. USB设备驱动程序学习笔记(二)

    一.usbmouse_as_key.c /* * drivers\hid\usbhid\usbmouse.c */ #include <linux/kernel.h>#include &l ...

  8. securecrt5序列号

    securecrt5序列号 Name:          Apollo InteractiveCompany:    Apollo InteractiveSerial Number: 03-50-02 ...

  9. Debug文件夹是什么

    debug是一个隐藏的对象,用于进行和调试相关的工作.是系统调试文件夹,用来存放系统运行过程中调试模块的日志文件,以便管理员根据这些日志文件来发现计算机所存在的问题.其中“UserMode”文件夹下存 ...

  10. 问题-XE10.2开发Datasnap时提示"provider not exported datasetprovider1"

    问题现象: 在用最新版本的XE10.2开发一个代有图片的数据操作时,出现“provider not exported datasetprovider1”. 问题原因: 提示这个信息,代表未找到data ...