Qt Creator + github copilot配置教程:AI编程新体验

2023-11-14


前言

作为C++/Qt开发者,想要用Qt Creator和github copilot写出惊艳的代码吗?
github copilot是一个基于人工智能的编程助手,它可以根据代码和注释,自动给出合适的代码建议,快速完成编程任务,写出更优雅、更高效、更安全的代码。copilot目前支持多种流行的编辑器和IDE,比如VS Code, Atom, Sublime Text等。
在 Qt Creator 11 版本中已对copilot插件进行了集成支持,本文将详细介绍如何在Windows环境下使用Qt Creator配置和使用copilot插件,迎接AI编程新体验。
Ready,系好安全带,带上我们的大长腿副驾驶copilot,小车车开起来,Go!


一、环境介绍

在开始使用github copilot之前,需要准备好以下环境:

系统:win10/11-x86_64
Qt版本:5.12.12 / 6.5.1
Qt Creator:11.0.1_10
nodejs版本:14.18.2
这些环境是必须的,因为github copilot插件依赖于nodejs运行,而Qt Creator 11是目前唯一支持github copilot插件的Qt版本。如果没有安装这些环境,或者安装的版本不符合要求,请按照下面的步骤进行安装或更新。
使用linux的小伙伴也可以按照以本教程配置,除安装包和安装路径外其他操作相同,linux更详细的操作可以观看视频教程:https://www.youtube.com/watch?v=kQzpvHPeBQo

二、Copilot配置

1.安装nodejs

nodejs是一个基于Chrome V8引擎的JavaScript运行环境,它可以在本地运行JavaScript代码。github copilot插件需要使用nodejs来启动一个本地服务器,与github copilot服务器进行交互。可以从nodejs官网下载安装包,并按照默认设置进行安装。
下载地址:
https://nodejs.org/en/download
下载版本:
Windows Installer (.msi) 64-bit
在这里插入图片描述
下载完成后默认安装,不要手动选择路径,否则需要手动配置路径。
默认路径:

C:\Program Files\nodejs

2.源码下载

要使用github copilot插件,还需要下载并配置github copilot的源码。这个源码是一个vim插件,它提供了与github copilot服务器通信的接口。可以通过以下两种方法之一来获取源码:

方法a: 代码克隆

~/AppData/Local/nvim/pack/github/start/copilot.vim
$ git clone --depth=1 https://github.com/github/copilot.vim.git
$ mv copilot.vim copilot  #代码仓库目录改名

这样就将GitHub Copilot的源码克隆到了本地,并将其重命名为copilot。

方法b: 直接下载源码包

https://github.com/github/copilot.vim/archive/refs/heads/release.zip

然后将解压出来的文件夹重命名为copilot。

3.路径配置

无论使用哪种方法下载源码,都请确保文件放置在以下正确位置:

C:\Users\你的用户名\AppData\Local\nvim\pack\github\start\copilot.vim\copilot
├─.github
├─autoload
├─dist
│  └─agent.js
├─doc
├─lua
├─plugin
└─syntax

其中,agent.js是一个JavaScript文件,它负责启动本地服务器,并与github copilot服务器通信。如果该文件不在这个位置,需要手动修改Qt Creator中github copilot插件的设置,指定agent.js文件的路径。

4.github copilot开通

八仙过海…
在这里插入图片描述

三、安装Qt Creator

1.安装包下载

Qt Creator 11快照下载链接:
https://download.qt.io/snapshots/qtcreator/11.0/11.0.1/10/

qt-creator官网下载

如果想要自行编译或下载最新版本,可访问仓库地址:
https://github.com/qt-creator/qt-creator/

2.安装目录:

C:\Qt: tree -L 1
├── Qt5.12.12
├── Qt6.5.1-Windows-x86_64-MinGW12.2.0-ucrt
├── qtcreator-11.0.0-rc1 √
├── QtIFW-4.6.0

安装好Qt Creator后,需要对已安装Qt版本的编译构建套件进行一些配置。

3.版本添加

编辑→Preferences(首选项)→构建套件→Qt版本进行配置:
在这里插入图片描述

4.编译器添加

在这里插入图片描述

5.调试添加

在这里插入图片描述

6.构建套件添加

在这里插入图片描述

四、体验AI编程

1.启用插件

帮助→关于插件→实用工具→Copilot,打勾勾✓→确定。
在这里插入图片描述

2.账号登陆

重启后,编辑→Preferences(首选项)→Copilot→Sign in to github。
在这里插入图片描述

然后按照提示,在浏览器中输入验证码,并授权github copilot访问您的github账号。
在这里插入图片描述

3.登陆成功

返回Qt Creator查看,在状态栏中显示“Sign out github用户名”则登陆成功。
在这里插入图片描述

返回Qt Creator查看,如果显示“Sign out github用户名”,则表示登陆成功。

在这里插入图片描述

4.快捷键设置

在这里插入图片描述

为了方便使用github copilot插件,您可以设置一些快捷键。打开编辑-首选项-环境-键盘,在搜索框中输入copilot,找到以下几个命令,并为它们分配合适的快捷键:

按键 功能 备注
Ctrl+E 打开/关闭github copilot智能代码补全功能,控制是否显示代码建议 手动配置
Ctrl+Q 请求github copilot给出的代码建议 手动配置
Ctrl+W 下一个建议 手动配置
Tab 全部应用建议 默认
Ctrl+Right 逐句应用建议 默认
鼠标悬停 手动选择 默认

配置快捷键时,注意快捷键冲突,搜索并删除冲突快捷键

5.驾车体验

完全按照以上步骤进行操作,那么所有的准备工作已做完,接下来就是见证奇迹的时刻了。
在这里插入图片描述


后记

希望这篇文章能够给大家带来一些启发和帮助,也希望大家能够喜欢 Qt 这个强大而灵活的框架。Qt 是一个开源的社区驱动的项目,它的发展离不开全球数百万 Qt 开发者和爱好者的贡献和支持。虽然自己没有任何贡献,但在这里还是要呼吁一下,如果对 Qt 有兴趣,或者想要为 Qt 社区做出一些贡献,可以通过以下方式参与进来:

  • 加入 Qt 官方网站(https://www.qt.io/)和 Qt 开发者网络(https://forum.qt.io/),了解Qt 的最新动态、教程、文档、案例和活动。
  • 下载并安装 QtCreator(https://www.qt.io/download),开始Qt 编程之旅,创建自己的 Qt 应用程序,并在 Qt 应用商店(https://marketplace.qt.io/)中分享自己的作品。
  • 加入 Qt 的开源项目(https://code.qt.io/),参与 Qt 的开发、测试、文档、翻译、设计等工作,为 Qt 的改进和创新做出贡献。

小手一抖点赞评论加关注,如果大家有任何问题或者建议,欢迎在评论区留言交流。
谢谢大家的阅读和支持!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt Creator + github copilot配置教程:AI编程新体验 的相关文章

  • 当我使用“control-c”关闭发送对等方的套接字时,为什么接收对等方的套接字不断接收“”

    我是套接字编程的新手 我知道使用 control c 关闭套接字是一个坏习惯 但是为什么在我使用 control c 关闭发送进程后 接收方上的套接字不断接收 在 control c 退出进程后 发送方的套接字不应该关闭吗 谢谢 我知道使用
  • 使闭包捕获的变量变得易失性

    闭包捕获的变量如何与不同线程交互 在下面的示例代码中 我想将totalEvents 声明为易失性的 但C 不允许这样做 是的 我知道这是错误的代码 这只是一个例子 private void WaitFor10Events volatile
  • WPF 中的调度程序和异步等待

    我正在尝试学习 WPF C 中的异步编程 但我陷入了异步编程和使用调度程序的困境 它们是不同的还是在相同的场景中使用 我愿意简短地回答这个问题 以免含糊不清 因为我知道我混淆了 WPF 中的概念和函数 但还不足以在功能上正确使用它 我在这里
  • 在 Visual Studio 2008 上设置预调试事件

    我想在 Visual Studio 中开始调试程序之前运行一个任务 我每次调试程序时都需要运行此任务 因此构建后事件还不够好 我查看了设置的 调试 选项卡 但没有这样的选项 有什么办法可以做到这一点吗 你唯一可以尝试的 IMO 就是尝试Co
  • 如果使用 SingleOrDefault() 并在数字列表中搜索不在列表中的数字,如何返回 null?

    使用查询正数列表时SingleOrDefault 当在列表中找不到数字时 如何返回 null 或像 1 这样的自定义值 而不是类型的默认值 在本例中为 0 你可以使用 var first theIntegers Cast
  • Qt moc 在头文件中实现?

    是否可以告诉 Qt MOC 我想声明该类并在单个文件中实现它 而不是将它们拆分为 h 和 cpp 文件 如果要在 cpp 文件中声明并实现 QObject 子类 则必须手动包含 moc 文件 例如 文件main cpp struct Sub
  • 指针减法混乱

    当我们从另一个指针中减去一个指针时 差值不等于它们相距多少字节 而是等于它们相距多少个整数 如果指向整数 为什么这样 这个想法是你指向内存块 06 07 08 09 10 11 mem 18 24 17 53 7 14 data 如果你有i
  • 如何将图像路径保存到Live Tile的WP8本地文件夹

    我正在更新我的 Windows Phone 应用程序以使用新的 WP8 文件存储 API 本地文件夹 而不是 WP7 API 隔离存储文件 旧的工作方法 这是我如何成功地将图像保存到 共享 ShellContent文件夹使用隔离存储文件方法
  • clang 实例化后静态成员初始化

    这样的代码可以用 GCC 编译 但 clang 3 5 失败 include
  • 从库中捕获主线程 SynchronizationContext 或 Dispatcher

    我有一个 C 库 希望能够将工作发送 发布到 主 ui 线程 如果存在 该库可供以下人员使用 一个winforms应用程序 本机应用程序 带 UI 控制台应用程序 没有 UI 在库中 我想在初始化期间捕获一些东西 Synchronizati
  • Discord.net 无法在 Linux 上运行

    我正在尝试让在 Linux VPS 上运行的 Discord net 中编码的不和谐机器人 我通过单声道运行 但我不断收到此错误 Unhandled Exception System Exception Connection lost at
  • 将 unsigned char * (uint8_t *) 转换为 const char *

    我有一个带有 uint8 t 参数的函数 uint8 t ihex decode uint8 t in size t len uint8 t out uint8 t i hn ln for i 0 i lt len i 2 hn in i
  • 实体框架 4 DB 优先依赖注入?

    我更喜欢创建自己的数据库 设置索引 唯一约束等 使用 edmx 实体框架设计器 从数据库生成域模型是轻而易举的事 现在我有兴趣使用依赖注入来设置一些存储库 我查看了 StackOverflow 上的一些文章和帖子 似乎重点关注代码优先方法
  • 如何使我的表单标题栏遵循 Windows 深色主题?

    我已经下载了Windows 10更新包括黑暗主题 文件资源管理器等都是深色主题 但是当我创建自己的 C 表单应用程序时 标题栏是亮白色的 如何使我自己的桌面应用程序遵循我在 Windows 中设置的深色主题 你需要调用DwmSetWindo
  • 将文本叠加在图像背景上并转换为 PDF

    使用 NET 我想以编程方式创建一个 PDF 它仅包含一个背景图像 其上有两个具有不同字体和位置的标签 我已阅读过有关现有 PDF 库的信息 但不知道 如果适用 哪一个对于如此简单的任务来说最简单 有人愿意指导我吗 P D 我不想使用生成的
  • Validation.ErrorTemplate 的 Wpf 动态资源查找

    在我的 App xaml 中 我定义了一个资源Validation ErrorTemplate 这取决于动态BorderBrush资源 我打算定义独特的BorderBrush在我拥有的每个窗口以及窗口内的不同块内
  • mysql-connector-c++ - “get_driver_instance”不是“sql::mysql”的成员

    我是 C 的初学者 我认为学习的唯一方法就是接触一些代码 我正在尝试构建一个连接到 mysql 数据库的程序 我在 Linux 上使用 g 没有想法 我运行 make 这是我的错误 hello cpp 38 error get driver
  • 防止索引超出范围错误

    我想编写对某些条件的检查 而不必使用 try catch 并且我想避免出现 Index Out of Range 错误的可能性 if array Element 0 Object Length gt 0 array Element 1 Ob
  • 使用 libcurl 检查 SFTP 站点上是否存在文件

    我使用 C 和 libcurl 进行 SFTP FTPS 传输 在上传文件之前 我需要检查文件是否存在而不实际下载它 如果该文件不存在 我会遇到以下问题 set up curlhandle for the public private ke
  • 恢复上传文件控制

    我确实阅读了以下帖子 C 暂停 恢复上传 https stackoverflow com questions 1048330 pause resume upload in c 使用 HTTP 恢复上传 https stackoverflow

随机推荐