01_vs_QT工具安装和使用
一、常用软件下载地址
1. QT安装方法
- QT从5.15 开始之后不在提供离线安装包,改用在线安装的方法,使用国内的镜像源安装
2. Visual Studio 安装
-
离线安装包太大还是改用在线安装的方式
-
ed2k://|file|cn_visual_studio_professional_2015_with_update_3_x86_x64_dvd_8923256.iso|7745202176|DD35D3D169D553224BE5FB44E074ED5E|/
-
KEY:HM6NR-QXX7C-DFW2Y-8B82K-WTYJV
3. Ubuntu1804下载:
-
Ubuntu下载地址
-
ubuntu下Qt安装:
- sudo apt-get install cmake qt5-default qtcreator qtdoc
4. Centos 7.x版本下载:
- aliyun 下载地址
二、常用软件配置
2.1 VIM
命令 | 语义 | 缩写 |
---|---|---|
set number | 代码显示行号 | set nu |
set nonumber | 取消行号显示 | set nonu |
syntax on | 关键词高亮显示 | - |
set cindent | C语法自动缩进 | set ci |
set autoindent | 新行自动缩进 | set ai |
set shiftwidth=4 | 缩进宽度4 | set sw=4 |
set tabstop=4 | tab键宽度4 | set ts=4 |
set softtabstop=4 | 制表符宽度4 | set st=4 |
set nobackup | 不备份 | - |
- vim 常用命令
shift+v+g+=
命令格式化ctrl+v+g+shift+i+//+esc
多行注释vsp 文件名称
分割窗口ctr+w
切换分割窗口exit
退出分割窗口!ls
在vim 下使用linux
系统命令
2.2 windows 修改CMD字符编码
- Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
- 创建
string value
选项autorun
- 添加
chcp 65001
- 添加
- 创建
三、常用集成开发环境的配置和使用
3.1 QT使用
3.1.1 颜色配置
-
tools-> options
3.1.2 字符编码配置
- 使用系统的默认字符编码格式
3.1.3 一个工程项目中创建多个c文件
- 一个项目工程中只能包含一个
mian函数
入口
-
需要编译的程序就改为
main
,其他代码文件改为main1
3.1.4 QT代码格式化
3.1.4.1 安装Beautifier插件
-
点击帮助->关于插件
-
勾选Beautifier
3.1.4.2 clang-format的配置
-
编辑>Preferences>美化器->自动格式化
-
下载单独版clang-format.exe
-
添加clang-format.exe
-
添加自定义配置
-
自定义个人样式
Language: Cpp # BasedOnStyle: Google AccessModifierOffset: -4 AlignAfterOpenBracket: DontAlign AlignConsecutiveMacros: true AlignConsecutiveAssignments: false AlignConsecutiveDeclarations: false AlignEscapedNewlines: Left AlignOperands: true AlignTrailingComments: true AllowAllArgumentsOnNextLine: true AllowAllConstructorInitializersOnNextLine: true AllowAllParametersOfDeclarationOnNextLine: true AllowShortBlocksOnASingleLine: false AllowShortCaseLabelsOnASingleLine: false AllowShortFunctionsOnASingleLine: InlineOnly AllowShortLambdasOnASingleLine: All AllowShortIfStatementsOnASingleLine: false AllowShortLoopsOnASingleLine: false AlwaysBreakAfterDefinitionReturnType: None AlwaysBreakAfterReturnType: None AlwaysBreakBeforeMultilineStrings: false AlwaysBreakTemplateDeclarations: Yes BinPackArguments: true BinPackParameters: true BraceWrapping: AfterCaseLabel: false AfterClass: true AfterControlStatement: true AfterEnum: true AfterFunction: true AfterNamespace: true AfterObjCDeclaration: false AfterStruct: true AfterUnion: true AfterExternBlock: false BeforeCatch: false BeforeElse: true IndentBraces: false SplitEmptyFunction: true SplitEmptyRecord: true SplitEmptyNamespace: true BreakBeforeBinaryOperators: None BreakBeforeBraces: Custom BreakBeforeInheritanceComma: false BreakInheritanceList: BeforeColon BreakBeforeTernaryOperators: true BreakConstructorInitializersBeforeComma: false BreakConstructorInitializers: BeforeColon BreakAfterJavaFieldAnnotations: false BreakStringLiterals: true ColumnLimit: 160 CommentPragmas: '^ IWYU pragma:' CompactNamespaces: false ConstructorInitializerAllOnOneLineOrOnePerLine: false ConstructorInitializerIndentWidth: 4 ContinuationIndentWidth: 4 Cpp11BracedListStyle: false DerivePointerAlignment: false DisableFormat: false ExperimentalAutoDetectBinPacking: false FixNamespaceComments: true ForEachMacros: - foreach - Q_FOREACH - BOOST_FOREACH IncludeBlocks: Regroup IncludeCategories: - Regex: '^<ext/.*\.h>' Priority: 2 - Regex: '^<.*\.h>' Priority: 1 - Regex: '^<.*' Priority: 2 - Regex: '.*' Priority: 3 IncludeIsMainRegex: '([-_](test|unittest))?$' IndentCaseLabels: false IndentPPDirectives: None IndentWidth: 4 IndentWrappedFunctionNames: false JavaScriptQuotes: Leave JavaScriptWrapImports: true KeepEmptyLinesAtTheStartOfBlocks: false MacroBlockBegin: '' MacroBlockEnd: '' MaxEmptyLinesToKeep: 1 NamespaceIndentation: All ObjCBinPackProtocolList: Never ObjCBlockIndentWidth: 4 ObjCSpaceAfterProperty: false ObjCSpaceBeforeProtocolList: true PenaltyBreakAssignment: 2 PenaltyBreakBeforeFirstCallParameter: 1 PenaltyBreakComment: 300 PenaltyBreakFirstLessLess: 120 PenaltyBreakString: 1000 PenaltyBreakTemplateDeclaration: 10 PenaltyExcessCharacter: 1000000 PenaltyReturnTypeOnItsOwnLine: 200 PointerAlignment: Right RawStringFormats: - Language: Cpp Delimiters: - cc - CC - cpp - Cpp - CPP - 'c++' - 'C++' CanonicalDelimiter: '' BasedOnStyle: google - Language: TextProto Delimiters: - pb - PB - proto - PROTO EnclosingFunctions: - EqualsProto - EquivToProto - PARSE_PARTIAL_TEXT_PROTO - PARSE_TEST_PROTO - PARSE_TEXT_PROTO - ParseTextOrDie - ParseTextProtoOrDie CanonicalDelimiter: '' BasedOnStyle: google ReflowComments: true SortIncludes: false SortUsingDeclarations: true SpaceAfterCStyleCast: false SpaceAfterLogicalNot: false SpaceAfterTemplateKeyword: true SpaceBeforeAssignmentOperators: true SpaceBeforeCpp11BracedList: false SpaceBeforeCtorInitializerColon: true SpaceBeforeInheritanceColon: true SpaceBeforeParens: ControlStatements SpaceBeforeRangeBasedForLoopColon: true SpaceInEmptyParentheses: false SpacesBeforeTrailingComments: 1 SpacesInAngles: false SpacesInContainerLiterals: true SpacesInCStyleCastParentheses: false SpacesInParentheses: false SpacesInSquareBrackets: false Standard: Cpp11 StatementMacros: - Q_UNUSED - QT_REQUIRE_VERSION TabWidth: 4 UseTab: Never
-
自定义样式说明
Language: Cpp # BasedOnStyle: Google AccessModifierOffset: -4 # 访问修饰符(public, protected, private)相对于类的缩进偏移量。负值表示向左缩进。 AlignAfterOpenBracket: Align # 在左括号后对齐参数或元素。 AlignConsecutiveMacros: true # 对齐连续的宏定义。 AlignConsecutiveAssignments: false # 对齐连续的赋值语句。 AlignConsecutiveDeclarations: false # 对齐连续的声明语句。 AlignEscapedNewlines: Left # 对齐转义换行符的位置。 AlignOperands: true # 对齐操作符两边的操作数。 AlignTrailingComments: true # 对齐行尾注释。 AllowAllArgumentsOnNextLine: true # 允许所有函数参数换行到下一行。 AllowAllConstructorInitializersOnNextLine: true # 允许所有构造函数初始化列表换行到下一行。 AllowAllParametersOfDeclarationOnNextLine: true # 允许所有声明的参数换行到下一行。 AllowShortBlocksOnASingleLine: false # 禁止将短代码块放在单行。 AllowShortCaseLabelsOnASingleLine: false # 禁止将短的case标签放在单行。 AllowShortFunctionsOnASingleLine: InlineOnly # 仅允许内联函数放在单行。 AllowShortLambdasOnASingleLine: All # 允许所有短lambda表达式放在单行。 AllowShortIfStatementsOnASingleLine: false # 禁止将短的if语句放在单行。 AllowShortLoopsOnASingleLine: false # 禁止将短的循环放在单行。 AlwaysBreakAfterDefinitionReturnType: None # 定义返回类型后不强制换行。 AlwaysBreakAfterReturnType: None # 声明返回类型后不强制换行。 AlwaysBreakBeforeMultilineStrings: false # 多行字符串前不强制换行。 AlwaysBreakTemplateDeclarations: Yes # 模板声明始终换行。 BinPackArguments: true # 将函数参数尽可能放在同一行。 BinPackParameters: true # 将函数参数尽可能放在同一行。 BraceWrapping: AfterCaseLabel: false # 在case标签之后不换行。 AfterClass: true # 在类声明之后换行。 AfterControlStatement: false # 在控制语句之后不换行。 AfterEnum: true # 在枚举之后换行。 AfterFunction: true # 在函数之后换行。 AfterNamespace: false # 在命名空间之后不换行。 AfterObjCDeclaration: false # 在Objective-C声明之后不换行。 AfterStruct: true # 在结构体之后换行。 AfterUnion: true # 在联合体之后换行。 AfterExternBlock: false # 在外部块之后不换行。 BeforeCatch: false # 在catch之前不换行。 BeforeElse: false # 在else之前不换行。 IndentBraces: false # 不缩进大括号。 SplitEmptyFunction: true # 将空函数分成多行。 SplitEmptyRecord: true # 将空记录分成多行。 SplitEmptyNamespace: true # 将空命名空间分成多行。 BreakBeforeBinaryOperators: None # 在二元操作符之前不强制换行。 BreakBeforeBraces: Custom # 自定义大括号换行样式。 BreakBeforeInheritanceComma: false # 在继承列表中的逗号之前不换行。 BreakInheritanceList: BeforeColon # 在继承列表的冒号之前换行。 BreakBeforeTernaryOperators: true # 在三元操作符之前换行。 BreakConstructorInitializersBeforeComma: false # 在构造函数初始化列表中的逗号之前不换行。 BreakConstructorInitializers: BeforeColon # 在构造函数初始化列表的冒号之前换行。 BreakAfterJavaFieldAnnotations: false # 在Java字段注解之后不换行。 BreakStringLiterals: true # 拆分字符串字面量到多行。 ColumnLimit: 80 # 每行代码的字符限制为80个。 CommentPragmas: '^ IWYU pragma:' # 注释Pragmas正则表达式。 CompactNamespaces: false # 不使用紧凑命名空间格式。 ConstructorInitializerAllOnOneLineOrOnePerLine: false # 构造函数初始化列表的格式,false表示允许分行。 ConstructorInitializerIndentWidth: 4 # 构造函数初始化列表的缩进宽度。 ContinuationIndentWidth: 4 # 续行的缩进宽度。 Cpp11BracedListStyle: false # C++11大括号初始化列表的样式。 DerivePointerAlignment: false # 不推导指针对齐方式。 DisableFormat: false # 不禁用格式化。 ExperimentalAutoDetectBinPacking: false # 不使用实验性的自动检测BinPacking。 FixNamespaceComments: true # 修正命名空间的注释。 ForEachMacros: - foreach - Q_FOREACH - BOOST_FOREACH # 自定义的forEach宏。 IncludeBlocks: Regroup # 包含的头文件块重新分组。 IncludeCategories: - Regex: '^<ext/.*\.h>' Priority: 2 - Regex: '^<.*\.h>' Priority: 1 - Regex: '^<.*' Priority: 2 - Regex: '.*' Priority: 3 # 包含文件的优先级类别。 IncludeIsMainRegex: '([-_](test|unittest))?$' # 主文件包含正则表达式。 IndentCaseLabels: false # 不缩进case标签。 IndentPPDirectives: None # 预处理指令不缩进。 IndentWidth: 4 # 缩进宽度为4。 IndentWrappedFunctionNames: false # 函数名称不缩进。 JavaScriptQuotes: Leave # 保持JavaScript引号样式。 JavaScriptWrapImports: true # 包装JavaScript导入。 KeepEmptyLinesAtTheStartOfBlocks: false # 不保留块开始的空行。 MacroBlockBegin: '' MacroBlockEnd: '' # 宏块开始和结束标记。 MaxEmptyLinesToKeep: 1 # 保留最多一行空行。 NamespaceIndentation: None # 命名空间不缩进。 ObjCBinPackProtocolList: Never # Objective-C协议列表不打包。 ObjCBlockIndentWidth: 4 # Objective-C块的缩进宽度。 ObjCSpaceAfterProperty: false # Objective-C属性之后不加空格。 ObjCSpaceBeforeProtocolList: true # Objective-C协议列表之前加空格。 PenaltyBreakAssignment: 2 # 赋值语句换行的惩罚。 PenaltyBreakBeforeFirstCallParameter: 1 # 第一个函数调用参数之前换行的惩罚。 PenaltyBreakComment: 300 # 注释换行的惩罚。 PenaltyBreakFirstLessLess: 120 # 第一个<<操作符换行的惩罚。 PenaltyBreakString: 1000 # 字符串换行的惩罚。 PenaltyBreakTemplateDeclaration: 10 # 模板声明换行的惩罚。 PenaltyExcessCharacter: 1000000 # 超过字符限制的惩罚。 PenaltyReturnTypeOnItsOwnLine: 200 # 返回类型换行的惩罚。 PointerAlignment: Right # 指针对齐方式为右对齐。 RawStringFormats: - Language: Cpp Delimiters: - cc - CC - cpp - Cpp - CPP - 'c++' - 'C++' CanonicalDelimiter: '' BasedOnStyle: google - Language: TextProto Delimiters: - pb - PB - proto - PROTO EnclosingFunctions: - EqualsProto - EquivToProto - PARSE_PARTIAL_TEXT_PROTO - PARSE_TEST_PROTO - PARSE_TEXT_PROTO - ParseTextOrDie - ParseTextProtoOrDie CanonicalDelimiter: '' BasedOnStyle: google # 原始字符串格式的设置。 ReflowComments: true # 重新排列注释。 SortIncludes: false # 不对包含文件排序。 SortUsingDeclarations: true # 对using声明进行排序。 SpaceAfterCStyleCast: false # C风格强制转换后不加空格。 SpaceAfterLogicalNot: false # 逻辑非操作符后不加空格。 SpaceAfterTemplateKeyword: true # template关键字后加空格。 SpaceBeforeAssignmentOperators: true # 赋值操作符之前加空格。 SpaceBeforeCpp11BracedList: false # C++11大括号初始化列表之前不加空格。 SpaceBeforeCtorInitializerColon: true # 构造函数初始化列表的冒号之前加空格。 SpaceBeforeInheritanceColon: true # 继承冒号之前加空格。 SpaceBeforeParens: ControlStatements # 控制语句前加空格。 SpaceBeforeRangeBasedForLoopColon: true # 基于范围的for循环冒号之前加空格。 SpaceInEmptyParentheses: false # 空括号中不加空格。 SpacesBeforeTrailingComments: 1 # 行尾注释前保留一个空格。 SpacesInAngles: false # 尖括号内不加空格。 SpacesInContainerLiterals: true # 容器字面量中加空格。 SpacesInCStyleCastParentheses: false # C风格强制转换的括号内不加空格。 SpacesInParentheses: false # 括号内不加空格。 SpacesInSquareBrackets: false # 方括号内不加空格。 Standard: Cpp11 # C++标准设置为C++11。 StatementMacros: - Q_UNUSED - QT_REQUIRE_VERSION # 语句宏。 TabWidth: 4 # 制表符宽度为4。 UseTab: Never # 从不使用制表符,使用空格代替。
3.1.4.3 格式化当前代码
- 工具>美化器>
ClangFotmat
>格式化当前文件
3.1.4.3 设置快捷键
- 编辑>Preferences>环境>键盘
3.1.4.4 设置代码自动换行
3.1.4.5 设置代码自动提示
- Help->about plugins ->clangcodemode
3.1.5 代码自动换行
- Display
- enable text wrapping
3.1.6 快捷键添加头文件包含代码
-
创建代码片段
工具 → 选项 → 文本编辑器 → 片段
3.2 visual studio 2019安装配置
3.2.1 安装
3.2.2 代码管理器配置
- 快捷键自动初始化编辑预备代码
3.2.2.1 打开代码管理器
3.2.2.2 代码管理器C语言文件创建
-
编辑文件内容
<?xml version="1.0" encoding="utf-8"?> <CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> <CodeSnippet Format="1.0.0"> <Header> <Title>#1</Title> <Shortcut>#1</Shortcut> <Description>c语言main函数</Description> <Author>Microsoft Corporation</Author> <SnippetTypes> <SnippetType>Expansion</SnippetType> <SnippetType>SurroundsWith</SnippetType> </SnippetTypes> </Header> <Snippet> <Declarations> <Literal> <ID>expression</ID> <ToolTip>要计算的表达式</ToolTip> <Default>true</Default> </Literal> </Declarations> <Code Language="cpp"><![CDATA[#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #include<stdlib.h> int main() { $selected$$end$ system("pause"); return EXIT_SUCCESS; }]]> </Code> </Snippet> </CodeSnippet> </CodeSnippets>
3.2.2.3 代码管理器C++语言文件创建
-
编辑文件内容
<?xml version="1.0" encoding="utf-8"?> <CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> <CodeSnippet Format="1.0.0"> <Header> <Title>#2</Title> <Shortcut>#2</Shortcut> <Description>c++语言main函数</Description> <Author>Microsoft Corporation</Author> <SnippetTypes> <SnippetType>Expansion</SnippetType> <SnippetType>SurroundsWith</SnippetType> </SnippetTypes> </Header> <Snippet> <Declarations> <Literal> <ID>expression</ID> <ToolTip>要计算的表达式</ToolTip> <Default>true</Default> </Literal> </Declarations> <Code Language="cpp"> <![CDATA[#define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; int main() { $selected$$end$ system("pause"); return 0; }]]> </Code> </Snippet> </CodeSnippet> </CodeSnippets>
3.3.3 安装主题
3.3.3.1 管理扩展
- 安装
Color Theme Editor for Visual Studio 2019
- 安装
NightOwl主题
3.3.3.2 使用主题
- 选择主题面板
3.3 QT和VS快捷键
3.3.1 通用编辑快捷键
功能 | Qt Creator | Visual Studio |
---|---|---|
保存文件 | Ctrl + S |
Ctrl + S |
撤销 | Ctrl + Z |
Ctrl + Z |
重做 | Ctrl + Shift + Z |
Ctrl + Y |
复制 | Ctrl + C |
Ctrl + C |
剪切 | Ctrl + X |
Ctrl + X |
粘贴 | Ctrl + V |
Ctrl + V |
全选 | Ctrl + A |
Ctrl + A |
查找 | Ctrl + F |
Ctrl + F |
替换 | Ctrl + R |
Ctrl + H |
行注释/取消注释 | Ctrl + / |
Ctrl + K, Ctrl + C / Ctrl + K, Ctrl + U |
快速复制一行 | ctrl+alt+⬇ |
3.3.2 代码导航
功能 | Qt Creator | Visual Studio |
---|---|---|
跳转到定义 | F2 或 Ctrl + 点击 |
F12 |
返回上一个位置 | Alt + ← |
Ctrl + - (减号) |
前进到下一个位置 | Alt + → |
Ctrl + Shift + - |
查找所有引用 | Ctrl + Shift + U |
Shift + F12 |
打开文件 | Ctrl + K |
Ctrl + , (搜索文件) |
切换头文件/源文件 | F4 |
Ctrl + K, Ctrl + O (需插件) |
3.3.3 调试相关
功能 | Qt Creator | Visual Studio |
---|---|---|
开始调试 | F5 |
F5 |
继续运行 | F5 |
F5 |
单步进入 | F11 |
F11 |
单步跳过 | F10 |
F10 |
单步跳出 | Shift + F11 |
Shift + F11 |
添加/删除断点 | F9 |
F9 |
查看变量值 | 悬停或调试窗口 | 悬停或调试窗口 |
3.3.4 代码生成与重构
功能 | Qt Creator | Visual Studio |
---|---|---|
自动补全 | Ctrl + Space |
Ctrl + Space |
生成函数定义 | Alt + Enter (快速修复) |
Ctrl + . (快速操作) |
重命名符号 | Ctrl + Shift + R |
F2 |
格式化代码 | Ctrl + I |
Ctrl + K, Ctrl + D |
提取为函数/变量 | 需手动操作 | Ctrl + R, Ctrl + M |
3.3.5 窗口管理
功能 | Qt Creator | Visual Studio |
---|---|---|
切换输出面板 | Alt + 1-4 |
Ctrl + Alt + O |
切换项目视图 | Alt + 0 |
Ctrl + Alt + L |
全屏模式 | Ctrl + Shift + F11 |
Shift + Alt + Enter |
拆分编辑器窗口 | Ctrl + E, 2 |
Ctrl + \ |
3.3.6 Qt Creator 特有快捷键
- 设计模式:
- 切换设计/编辑视图:
F3
- 预览 UI 设计:
Alt + Shift + R
- 切换设计/编辑视图:
- Qt 信号槽:
- 跳转到槽函数:
Alt + Enter
(在信号上)
- 跳转到槽函数:
- 项目构建:
- 构建当前项目:
Ctrl + B
- 运行:
Ctrl + R
- 构建当前项目:
3.3.7 Visual Studio 特有快捷键
- 解决方案管理:
- 生成解决方案:
F7
- 重新生成:
Ctrl + Alt + F7
- 生成解决方案:
- 多光标操作:
- 添加光标:
Alt + 点击
- 块选择:
Shift + Alt + 方向键
- 添加光标:
- Git 集成:
- 提交更改:
Ctrl + Shift + G
- 提交更改:
3.3.8 总结
- Qt Creator:更适合 Qt 开发,快捷键设计简洁,与 Qt 框架深度集成(如信号槽跳转)。
- Visual Studio:功能更全面,支持复杂项目管理和多语言开发(如 C#、C++),快捷键更丰富但需记忆组合键。
建议根据开发环境自定义快捷键(Qt Creator:工具 > 选项 > 环境 > 键盘
;VS:工具 > 选项 > 环境 > 键盘
)。