笔者前言:
OpenAI前一段发布聊天机器人模型ChatGPT,迅速出圈全网。chatgpt的出现,让LLMs走进了普通人的视野。同时,也让传统的AI助手变成了原始人。chatgpt向我们展示了LLM目前的天花板。而且这个天花板还相当高。
在突发奇想下,我决定用chatgpt写一个小项目,并且让他写一篇关于该项目的文章。
该项目以及博文全部是chatgpt写的,步骤详细,简单易懂
界面展示
好的,下面是一篇介绍使用 Qt 框架创建 To-Do List 应用程序的 CSDN 博客文章:
文章标题:使用 Qt 框架创建 To-Do List 应用程序
介绍:
To-Do List 是一种非常常见的任务管理工具,可以帮助用户记录和追踪待办事项。在本篇博客中,我们将介绍如何使用 Qt 框架创建一个简单的 To-Do List 应用程序,该程序可以让用户添加、编辑和删除任务,并且可以将任务状态标记为已完成或未完成。
步骤:
1.创建 Qt 应用程序
首先,我们需要使用 Qt Creator 创建一个新的 Qt 应用程序。打开 Qt Creator,选择 File -> New File or Project,然后选择 Qt Widgets Application,输入应用程序的名称和位置,最后单击“Next”。
在下一个页面上,您可以选择预设的框架和配置,或者自定义您的应用程序。在这个示例中,我们将使用默认配置。单击“Next”以继续。
在最后一个页面上,您可以选择使用 Git 版本控制器、创建一个类、在构建应用程序时运行自定义命令等。在这个示例中,我们将使用默认设置。单击“Finish”以创建新的 Qt 应用程序。
2.创建 UI 界面
在 Qt Creator 中,我们可以使用可视化设计工具创建应用程序的 UI 界面。打开“Design”视图,并向应用程序的主窗口中添加一些控件,例如一个文本框、一个按钮和一个列表。
将文本框和按钮分别命名为“m_taskLineEdit”和“m_addTaskButton”,将列表命名为“m_taskListWidget”。可以使用“Object Inspector”视图或直接在代码中定义这些控件。
在“MainWindow.h”头文件中定义这些控件:
#include <QMainWindow>
#include <QListWidget>
#include <QLineEdit>
#include <QPushButton>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void addTask();
void removeTask();
void markTaskAsCompleted();
void loadTasks();
void saveTasks();
private:
void createUI();
void setupConnections();
QListWidget *m_taskListWidget;
QLineEdit *m_taskLineEdit;
QPushButton *m_addTaskButton;
QPushButton *m_removeTaskButton;
QPushButton *m_markAsCompletedButton;
};
在“MainWindow.cpp”文件中,我们可以使用“setupUI()”函数创建 UI 界面并将其添加到主窗口中。
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
createUI();
setupConnections();
loadTasks();
}
void MainWindow::createUI()
{
// Create the task list widget
m_taskListWidget = new QListWidget(this);
setCentralWidget(m_taskListWidget);
// Create the task input field and the add button
m_taskLineEdit = new QLineEdit(this);
m_addTaskButton = new QPushButton(tr("Add Task"), this);
// Create the remove button and themark as completed button
m_removeTaskButton = new QPushButton(tr("Remove Task"), this);
m_markAsCompletedButton = new QPushButton(tr("Mark as Completed"), this);
// Create a horizontal layout for the task input field and the add button
QHBoxLayout *inputLayout = new QHBoxLayout;
inputLayout->addWidget(m_taskLineEdit);
inputLayout->addWidget(m_addTaskButton);
// Create a horizontal layout for the remove button and the mark as completed button
QHBoxLayout *buttonLayout = new QHBoxLayout;
buttonLayout->addWidget(m_removeTaskButton);
buttonLayout->addWidget(m_markAsCompletedButton);
// Create a vertical layout for the input layout, the task list widget and the button layout
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addLayout(inputLayout);
mainLayout->addWidget(m_taskListWidget);
mainLayout->addLayout(buttonLayout);
// Set the main layout of the main window
QWidget *centralWidget = new QWidget(this);
centralWidget->setLayout(mainLayout);
setCentralWidget(centralWidget);
}
3. 添加任务
当用户在文本框中输入任务并单击“Add Task”按钮时,我们需要将该任务添加到任务列表中。在“MainWindow.cpp”文件中,我们可以使用“addTask()”函数来实现此功能。`
void MainWindow::addTask()
{
// Get the task from the text input field
QString task = m_taskLineEdit->text().trimmed();
// If the task is not empty, add it to the list
if (!task.isEmpty()) {
QListWidgetItem *item = new QListWidgetItem(task, m_taskListWidget);
item->setFlags(item->flags() | Qt::ItemIsEditable);
m_taskListWidget->addItem(item);
m_taskLineEdit->clear();
}
}
在此函数中,我们首先从文本框中获取任务字符串。如果该字符串不为空,则创建一个 QListWidgetItem 对象,并将其添加到任务列表中。我们还设置了该对象的标志以允许用户在列表中编辑任务。最后,我们清空了文本框。
我们需要将“addTask()”函数与“m_addTaskButton”按钮的“clicked()”信号连接起来,以便在用户单击该按钮时调用该函数。在“setupConnections()”函数中添加以下代码:
connect(m_addTaskButton, &QPushButton::clicked, this, &MainWindow::addTask);
4.删除任务
当用户选择一个任务并单击“Remove Task”按钮时,我们需要将该任务从任务列表中删除。在“MainWindow.cpp”文件中,我们可以使用“removeTask()”函数来实现此功能。
void MainWindow::removeTask()
{
// Get the selected task and remove it from the list
QList<QListWidgetItem *> selectedItems = m_taskListWidget->selectedItems();
for (auto item : selectedItems) {
delete item;
}
}
5.标记任务
当用户选择一个任务并单击“Mark as Completed”按钮时,我们需要将该任务标记为已完成。在“MainWindow.cpp”文件中,我们可以使用“markTaskAsCompleted()”函数来实现此功能。
void MainWindow::markTaskAsCompleted()
{
// Get the selected task and set its text decoration to strike out
QList<QListWidgetItem *> selectedItems = m_taskListWidget->selectedItems();
for (auto item : selectedItems) {
QFont font = item->font();
font.setStrikeOut(true);
item->setFont(font);
}
}
在此函数中,我们首先获取用户选择的任务,然后将其文本装饰设置为删除线。
我们需要将“markTaskAsCompleted()”函数与“m_markAsCompletedButton”按钮的“clicked()”信号连接起来,以便在用户单击该按钮时调用该函数。在“setupConnections()”函数中添加以下代码:
connect(m_markAsCompletedButton, &QPushButton::clicked,
this, &MainWindow::markTaskAsCompleted);
6.处理窗口关闭事件
当用户关闭窗口时,我们需要询问他们是否真的想退出应用程序。在“MainWindow.cpp”文件中,我们可以使用“closeEvent()”函数来实现此功能。
void MainWindow::closeEvent(QCloseEvent *event)
{
// Ask the user if they really want to quit
QMessageBox::StandardButton resBtn = QMessageBox::question(this, tr("Todo List"),
tr("Are you sure you want to exit?\n"),
QMessageBox::Cancel | QMessageBox::No | QMessageBox::Yes,
QMessageBox::Yes);
if (resBtn != QMessageBox::Yes) {
event->ignore();
} else {
event->accept();
}
}
在此函数中,我们创建了一个 QMessageBox 对话框来询问用户是否真的想退出应用程序。如果用户单击“是”按钮,则我们接受关闭事件,否则我们忽略它。
这就完成了我们的 To-Do List 应用程序!现在我们可以编译并运行它,添加、删除和标记任务为已完成。当我们尝试关闭应用程序时,它会提示我们是否真的想退出。
源代码:link 点我下载
提取码:f56u
总结
作为一个刚入行的新码农,在被ChatGPT震撼之后,胡言乱语。自从我接触代码起,作为一名程序员,我居然第一次对程序产生了恐惧感,那种从无形的世界里给了我有形的一拳,让我感到后怕。。。
但是,我觉得现阶段最重要的是,要学会利用好AI。AI可以帮助我们以更高效的方式思考和工作。要学习如何与AI沟通,如何利用AI的能力提高自己的效率。比如,过去要调用一个API,需要一遍遍的查阅各种文档、例子以及教程。现在,只要一句话,我们就能得到一段几乎可以直接使用的代码。但是,同时也要加强自身知识的积累。未来能留存下来的人,除了能利用AI,也要能发现AI的问题。互补才是生存之道。