Introdução
Neste tutorial, você aprenderá a construir um sistema de gerenciamento de tarefas utilizando C++ com a biblioteca Qt e o banco de dados SQLite. A construção deste sistema é uma excelente maneira de entender como desenvolver interfaces gráficas interativas com Qt, ao mesmo tempo que se aprende a manipular um banco de dados leve como o SQLite. Ao longo do tutorial, abordaremos desde a configuração do ambiente de desenvolvimento até a implementação de funcionalidades como a criação, edição, e remoção de tarefas. Este guia completo será útil para desenvolvedores iniciantes e intermediários que buscam aprimorar suas habilidades em C++ e desenvolvimento de aplicações com interfaces gráficas.
Etapas
Configuração do Ambiente de Desenvolvimento
Certifique-se de ter o Qt Creator e o SQLite instalados na sua máquina. Você pode baixar o Qt no site oficial (https://www.qt.io/download). Instale o SQLite de acordo com as instruções do site oficial (https://www.sqlite.org/download.html). Após a instalação, verifique se você consegue criar projetos no Qt Creator.
commands# Abrir o Qt Creator
# Criar um novo projeto Qt Widgets ApplicationCriando a Interface Gráfica
Utilizaremos o Qt Designer para criar a interface gráfica do nosso sistema. A interface deve ter um campo de texto para inserir novas tarefas, um botão para adicionar a tarefa e uma lista para exibir as tarefas criadas. Abra o Qt Designer e crie um formulário que contenha um QLineEdit, um QPushButton e um QListWidget.
ui_filemainwindow.ui (criado pelo Qt Designer)
Configuração do Projeto
No arquivo .pro do projeto, adicione as dependências necessárias para usar SQLite. Isso permite que o Qt utilize o SQLite como mecanismo de banco de dados.
project_fileQT += sql
Implementação do Modelo de Dados
Crie uma classe chamada Task que representa uma tarefa. Essa classe deve ter atributos como id, title e status. Implemente métodos para manipular esses dados.
Task.h#ifndef TASK_H #define TASK_H #include <QString> class Task { public: Task(int id, const QString& title); int getId() const; QString getTitle() const; private: int id; QString title; }; #endif // TASK_H
Task.cpp#include "Task.h" Task::Task(int id, const QString& title) : id(id), title(title) {} int Task::getId() const { return id; } QString Task::getTitle() const { return title; }
Conexão com o Banco de Dados SQLite
Crie uma classe DatabaseManager para gerenciar a conexão com o banco de dados SQLite. Esta classe deve incluir métodos para abrir o banco de dados e executar comandos SQL.
DatabaseManager.h#ifndef DATABASEMANAGER_H #define DATABASEMANAGER_H #include <QSqlDatabase> #include <QString> class DatabaseManager { public: DatabaseManager(); bool openDatabase(); void closeDatabase(); private: QSqlDatabase db; }; #endif // DATABASEMANAGER_H
DatabaseManager.cpp#include "DatabaseManager.h" #include <QSqlError> #include <QSqlQuery> DatabaseManager::DatabaseManager() { db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("tasks.db"); } bool DatabaseManager::openDatabase() { return db.open(); } void DatabaseManager::closeDatabase() { db.close(); }
Implementação da Lógica de Adição de Tarefas
Adicione a funcionalidade de adicionar tarefas ao banco de dados quando o botão de adicionar for clicado. Isso deve incluir a coleta do título da tarefa do QLineEdit e a execução de uma consulta SQL de inserção.
MainWindow.cpp#include "MainWindow.h" #include "ui_mainwindow.h" #include "DatabaseManager.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); databaseManager = new DatabaseManager(); if (databaseManager->openDatabase()) { connect(ui->addButton, &QPushButton::clicked, this, &MainWindow::addTask); } } void MainWindow::addTask() { QString taskTitle = ui->taskLineEdit->text(); QSqlQuery query; query.prepare("INSERT INTO tasks (title) VALUES (:title)"); query.bindValue(":title", taskTitle); query.exec(); // Atualizar a lista de tarefas }
Listando as Tarefas
Implemente a lógica para listar as tarefas armazenadas no banco de dados no QListWidget quando a aplicação for iniciada.
MainWindow.cppvoid MainWindow::loadTasks() { QSqlQuery query("SELECT * FROM tasks"); while (query.next()) { QString taskTitle = query.value(1).toString(); ui->taskListWidget->addItem(taskTitle); } }
Testando a Aplicação
Compile e execute a aplicação no Qt Creator. Teste adicionando, visualizando e confirmando se as tarefas estão sendo corretamente armazenadas no banco de dados e exibidas na lista.
commands# Compilar e executar a aplicação
Ctrl + R (Qt Creator)Conclusão e Melhorias Futuras
Avalie o que foi aprendido e discuta possíveis melhorias, como implementar a edição e remoção de tarefas, adicionar funcionalidades de recuperação de tarefas e melhorias na interface gráfica.
notesConsidere implementar um botão para remover tarefas selecionadas da lista e do banco de dados.
Conclusão
Neste tutorial, você aprendeu a implementar um sistema de gerenciamento de tarefas utilizando C++ com Qt e SQLite. Desde a configuração do ambiente de desenvolvimento até a implementação das principais funcionalidades, você agora tem uma base sólida para desenvolver aplicações C++ com interfaces gráficas. Considere explorar mais sobre Qt e SQLite para aprimorar ainda mais suas habilidades, adicionando funcionalidades como edição e remoção de tarefas, além de explorar a criação de uma interface mais amigável e responsiva.