当前位置: 首页 > news >正文

基于Qt5.5.0的sql,C++备忘录软件的编写

我的第一个软件。

基于Qt5.5.0的 sql ,C++备忘录软件version1.0的编写

我用的Qt版本是5.5.0免配置编译器的版本,这里附上我使用的软件下载地址:http://download.qt.io/official_releases/qt/5.5/5.5.0/ 下载 qt-opensource-windows-x86-mingw492-5.5.0.exe即可。

话不多说,第一先是基于Qt5.5.0的sql的配置,这里详见我的另外一篇博客:http://www.cnblogs.com/xiaobo-Linux/p/4674986.html

 

此时,sql环境配置好,编写代码。

 

附上我的代码:

 

 

            ++++++++++++++++++project.pro里面的代码++++++++++++++++

 

 

#-------------------------------------------------
#
# Project created by QtCreator 2015-07-21T13:12:40
#
#-------------------------------------------------

QT       += core gui
QT += sql           # 引用数据库
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = project3
TEMPLATE = app


SOURCES += main.cpp\
        reminder.cpp

HEADERS  += reminder.h

FORMS    += reminder.ui
 #DESTDIR += C://   # 编译文件输出路径,不加此句默认在工程文件下创建.db
RC_FILE=icon.rc #添加软件图标

 

               +++++++++++++++++++reminder.h的头文件代码+++++++++++++++++++++++

 

 

 

#ifndef REMINDER_H
#define REMINDER_H



#include <QMainWindow>
#include <QSqlDatabase> //数据库类
#include <QSqlQuery>    //执行语句类
//#include <QSqlRecord>   //返回记录类
#include <QtSql>
#include <QApplication>
#include <QMessageBox>
#include <iostream>
//#include <QtDebug>



namespace Ui {
class Reminder;

}

class Reminder : public QMainWindow
{
    Q_OBJECT



public:
    explicit Reminder(QWidget *parent = 0);
    ~Reminder();


private slots:




   void on_save_clicked();


   void on_del_clicked();

   void select();


   void on_search_clicked();

   void on_back_clicked();

private:
    Ui::Reminder *ui;
    QSqlDatabase db;            //声明数据库类

};


#endif // REMINDER_H

           

                    ++++++++++++++++++++++++main.cpp代码+++++++++++++++++++++++++++++

 

#include "reminder.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    //创建DB文件,创建表格
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    std::cout<<"begin sqlite"<<std::endl;
    db.setDatabaseName("reminder.db");
    if ( !db.open()){
    QMessageBox::critical(NULL, QObject::tr("Collection"), QObject::tr("failed to connect to database!"));
    return 0;
    }
    QSqlQuery query;
    query.exec("create table reminder (id integer PRIMARY KEY AUTOINCREMENT,主题 text,内容 text)");


    Reminder w;
    w.show();

    return a.exec();
}

 

 

                       +++++++++++++++++reminder.cpp代码+++++++++++++++++

 

#include "reminder.h"
#include "ui_reminder.h"

 Reminder::Reminder(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::Reminder)
{
    ui->setupUi(this);
    setWindowTitle("小波的提醒备忘录V1.0");
  setWindowIcon(QIcon("xiaobo.ico"));//设置软件图标
select();//显示表格 } Reminder::~Reminder() { db.close(); delete ui; } void Reminder::on_save_clicked() { QSqlQuery query; query.prepare("insert into reminder (id,主题,内容)values(1:theme , :content )"); //id自动增加,先从1起,之后无需手动插入 query.prepare("insert into reminder (主题,内容)values(:theme , :content )"); query.bindValue(":theme",ui->textEdit->text()); //从输入框插入数据 query.bindValue(":content",ui->textEdit_2->toPlainText()); query.exec(); select();//显示表格 } void Reminder::on_del_clicked() { QSqlQuery query; int curRow = ui->tableView->currentIndex().row(); //鼠标选择删除第几行 QModelIndex index = ui->tableView->currentIndex(); int id=index.sibling(curRow,0).data().toInt(); query.prepare("delete from reminder where id = :id"); query.bindValue(":id",id); query.exec(); select(); } void Reminder::select() { //将sql表格显示到tableView里 QSqlQueryModel *model = new QSqlQueryModel(ui->tableView); model->setQuery(QString("select *from reminder")); model->setHeaderData(0,Qt::Horizontal,QObject::tr("ID")); model->setHeaderData(1,Qt::Horizontal,QObject::tr("主题")); model->setHeaderData(2,Qt::Horizontal,QObject::tr("内容")); ui->tableView->setModel(model); } void Reminder::on_search_clicked() { QSqlQuery query; ui -> tableView -> clearSpans(); //tableview清空 QSqlQueryModel *model = new QSqlQueryModel(ui->tableView); query.prepare("select *from reminder where 主题 = :theme "); //like模糊查询没成功 query.bindValue(":theme",ui->textEdit_3->text()); query.exec(); model->setQuery(query); model->setHeaderData(0,Qt::Horizontal,QObject::tr("ID")); model->setHeaderData(1,Qt::Horizontal,QObject::tr("主题")); model->setHeaderData(2,Qt::Horizontal,QObject::tr("内容")); ui->tableView->setModel(model); } void Reminder::on_back_clicked() { select(); }

     

       ++++++++++++++++reminder.ui++++++++++++++++++++++++++++

 

           =============== 下面是演示软件的演示情况 ================

 

 

                           ------------------------主界面 ------------------------------

 

 

 

               -----------------检索---------------------------

 

 

              Qt为生成的软件添加图标的方法:

1. 准备好ico图标文件名字为 xiaobo.ico,最好放在和.pro文件同一个文件夹中

     这里在线生成的图标地址:http://www.ico.la/

2.创建一个叫icon.rc的文件,里面写上文本信息IDI_ICON1 ICON " xiaobo.ico",保存好

 

3.在pro文件中添加代码:RC_FILE=icon.rc

 

4.在MainWindow的构造函数中添加setWindowIcon(QIcon(" xiaobo.ico"));

 

5.再重新运行就ok了

 

 

 

 ======最后来发布软件=========

 

Qt使用自带的windeployqt 生成exe来发布软件,详见我的另外一篇博客:http://www.cnblogs.com/xiaobo-Linux/p/4678026.html

 

相关文章:

  • IDFactory int类型ID生成器
  • SharePoint 2013 内容部署报错
  • 如何在CentOS6.5中进行PPPOE拨号上网
  • Ubuntu下安装Atom及使用
  • PHP读取超大文件的实例代码
  • YxdIOCP (DIOCP修改版)
  • ocp-051-3
  • java实现多线程的三种方式
  • ava垃圾加收机制和ios的arc有什么区别
  • Linux iostat命令详解
  • 建立完整的单向动态链表(包括初始化、创建、插入、删除、查找、销毁、输出)...
  • 【Go】Linux下使用Sublime Text搭建开发环境
  • 双nginx(主备、主主)反向代理tomcat实现web端负载均衡
  • c# 笔试题及参考答案大全
  • 如果有一天你没有了动力,可以看看
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • Android系统模拟器绘制实现概述
  • conda常用的命令
  • IDEA常用插件整理
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • Mithril.js 入门介绍
  • overflow: hidden IE7无效
  • 力扣(LeetCode)965
  • 手写一个CommonJS打包工具(一)
  • 详解NodeJs流之一
  • 小程序01:wepy框架整合iview webapp UI
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 自动记录MySQL慢查询快照脚本
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • #数学建模# 线性规划问题的Matlab求解
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (BFS)hdoj2377-Bus Pass
  • (day6) 319. 灯泡开关
  • (Forward) Music Player: From UI Proposal to Code
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (三)uboot源码分析
  • (三十五)大数据实战——Superset可视化平台搭建
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .net mvc 获取url中controller和action
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .net6+aspose.words导出word并转pdf
  • @Async注解的坑,小心
  • [ C++ ] 继承
  • [AX]AX2012开发新特性-禁止表或者表字段
  • [C++] 如何使用Visual Studio 2022 + QT6创建桌面应用
  • [iOS]把16进制(#871f78)颜色转换UIColor