代码辅助记录

注意:

  • 每个步骤,最好是 AI 能理解的程度,这样成功率会高一些
  • 使用合适的 prompt
    • 准确理解
    • 专业知识
  • 如何快速地想到 prompt 方式是非常重要的
    • 能快速解决问题
  • 迭代进化 Prompt 也是十分重要的,能不断完善
  • 后期一些 Prompt 甚至可以让 AI 写出生成代码

代码编写辅助:

  • [ ] 类成员变量命名辅助

实践:

Prompt:

1
你是一个ChatGPT的资深prompt设计师。我现在需要更好地使用ChatGPT,我需要你帮我设计prompt。

QT

开头

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
你是一个资深的QT C++开发工程师,能解决 QT 界面大量重复布局的开发,你根据需求编写这样的代码,如果有大量控件,你擅长的是一个个写出来而不是用循环。

你的局部变量命名风格是l_前缀加上首字母大写,你的成员变量和函数风格是加上this指针。

我后续会给出具体需求,你给我需要的代码。

我给出一些界面需要的控件,你要给我写头文件的声明和构建的源码

我现在有这些控件;
你给出头文件指针的声明。
你给出构建的声明。
我有个布局叫;你给我把这些对象添加进去。

你现在要编写一个类的代码,类是继承QWidget,叫做。你要给出成员变量的声明,控件创建后要马上命名对象名称,这些完成最后布局。成员变量有:。

你是一个资深的QT C++开发工程师,能解决各种各样QT中复杂的问题。

辅助编写

最好是 few shot。给出样例的 prompt,后续直接使用即可。

把操作批次化。

1
如批量添加空指针。

上下文学习

1
我们来上下文学习,根据我的样例给出输出,不要增加多余的东西,和输出多余的废话。你能精准的理解我的提示并给出输出。

input:

output:

成员控件生成:
可优化

  • [ ] 标签和按钮的生成值加到 prompt 中
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
输入:海图btn、导航le、目标lab、目标lv、目标pg、目标tv
输出: 
// 海图按钮 
QPushButton* chartButton = nullptr; 
// 导航输入框 
QLineEdit* routeLineEdit = nullptr; 
// 目标标签 
QLabel* targetLabel = nullptr;
// 目标列表 
QListView* targetListView = nullptr;
// 目标进度条
QProgressBar* targetProgressBar = nullptr;
// 目标表格
QTableView* targetTableView = nullptr;

this->chartButton = new QPushButton(tr("Chart"), this);
this->routeLineEdit = new QLineEdit(this);
this->targetLabel = new QLabel(this);
this->targetListView = new QListView(this);
this->targetProgressBar = new QProgressBar(this);
this->targetTableView = new QTableView(this);

this->chartButton->setObjectName("ChartButton");
this->routeLineEdit->setObjectName("RouteLineEdit");
this->targetLabel->setObjectName("TargetLabel");
this->targetListView->setObjectName("TargetListView");
this->targetProgressBar->setObjectName("TargetProgressBar");
this->targetTableView->setObjectName("TargetTableView");
1
2
3
4
5
6
7
8
输入:
// 海图按钮 
QPushButton* chartButton = nullptr; 
// 导航输入框 
QLineEdit* routeLineEdit = nullptr; 
输出:
QPushButton* chartButton = nullptr; 
QLineEdit* routeLineEdit = nullptr; 
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
输入:
// 海图按钮 
QPushButton* chartButton; 
// 导航输入框 
QLineEdit* routeLineEdit; 
输出:
// 海图按钮 
QPushButton* chartButton = nullptr; 
// 导航输入框 
QLineEdit* routeLineEdit = nullptr; 
1
2
3
4
5
6
7
8
提示:去除中文输出
输入:海图lab、导航lab
输出:
QLabel* l_chartTipLabel = new QLabel(tr("Chart"), this);
QLabel* l_routeTipLabel = new QLabel(tr("Route"), this);

l_chartTipLabel->setObjectName("ChartTipLabel");
l_routeTipLabel->setObjectName("RouteTipLabel");
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
输入:mainV{btnH{listV}, shipinfoG, labH}
输出:
QVBoxLayout* l_mainLayout = new QVBoxLayout;
l_mainLayout->setSpacing(0);
l_mainLayout->setMargin(0);
// First Level Layout
QHBoxLayout* l_btnLayout = new QHBoxLayout;
l_btnLayout->setSpacing(0);
l_btnLayout->setMargin(0);
QGridLayout* l_shipInfoLayout = new QGridLayout;
l_shipInfoLayout->setSpacing(0);
l_shipInfoLayout->setMargin(0);
QHBoxLayout* l_labLayout = new QHBoxLayout;
l_labLayout->setSpacing(0);
l_labLabout->setMargin(0);

// Second Level Layout
QVBoxLayout* l_listLayout = new QVBoxLayout;
l_listLayout->setSpacing(0);
l_listLayout->setMargin(0);

// Arrange Layout
l_mainLayout->addLayout(l_btnLayout);
l_mainLayout->addLayout(l_shipInfoLayout);
l_mainLayout->addLayout(l_labLayout);

l_btnLayout->addLayout(l_listLayout);
this->setLayout(l_mainLayout);
1
2
输入:mainV{btnH{listV}, shipinfoG, labH}
输出: