基于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 --21T13::
#
#-------------------------------------------------
QT += core gui
QT += sql # 引用数据库
greaterThan(QT_MAJOR_VERSION, ): QT += widgets
TARGET = project3
TEMPLATE = app
SOURCES += main.cpp\
reminder.cpp
HEADERS += reminder.h
FORMS += reminder.ui
#DESTDIR += C:// # 编译文件输出路径,不加此句默认在工程文件下创建.dbRC_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:
);
~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!"));
;
}
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();
).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(,Qt::Horizontal,QObject::tr("ID"));
model->setHeaderData(,Qt::Horizontal,QObject::tr("主题"));
model->setHeaderData(,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(,Qt::Horizontal,QObject::tr("ID"));
model->setHeaderData(,Qt::Horizontal,QObject::tr("主题"));
model->setHeaderData(,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
基于Qt5.5.0的sql,C++备忘录软件的编写的更多相关文章
- 基于Qt5.5.0的sql数据库、SDK_tts文本语音朗读的CET四六级单词背诵系统软件的编写V1.0
作者:小波 QQ:463431476 请关注我的博客园:http://www.cnblogs.com/xiaobo-Linux/ 我的第二款软件:CET四六级单词背诵软件.基于QT5.5.0.sql数 ...
- 基于Spark1.3.0的Spark sql三个核心部分
基于Spark1.3.0的Spark sql三个核心部分: 1.可以架子啊各种结构化数据源(JSON,Hive,and Parquet) 2.可以让你通过SQL,saprk内部程序或者外部攻击,通过标 ...
- linux下编译qt5.6.0静态库——configure配置
linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...
- linux下编译qt5.6.0静态库——configure配置(超详细,有每一个模块的说明)(乌合之众)
linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...
- linux下编译qt5.6.0静态库(使用./configure --help来看看都有哪些参数。超详细,有每一个模块的说明。如果改变了安装的目录,需要到安装目录下的bin目录下创建文件qt.conf)(乌合之众)good
linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...
- Qt5.7.0配置选项(configure非常详细的参数)
configure是一个命令行工具,用于配置Qt编译到指定平台.configure必须运行于Qt源码根目录.当运行configure时,编译源码使用的是所选工具链中的make工具. 一.源码目录.编译 ...
- 使用Qt5.7.0 VS2015版本生成兼容XP的可执行程序 good(从VS2012 update1开始支持xp和c++11)
一.直接使用VS2012/VS2013/VS2015生成XP兼容的可执行程序 Visual Studio刚发布时没打补丁,称为RTM版,之后会陆续发布补丁,进行bug修复和功能增强.VS2010及之前 ...
- VS2015编译Qt5.7.0生成支持XP的静态库(很不错)
一.编译工具 1.VS2015 编译Qt5.7.0的所需VS版本:Visual Studio 2013 (Update1)或Visual Studio 2015 (Update2).因为Update补 ...
- Win7(32bit)下Qt5.5.0和OpenCV2.4.9环境的搭建
之前一直基于Windows平台(Win 7 32bit)使用VS2010做OpenCV的开发,现在开始学习在Windows 下使用Qt做OpenCV的开发.本文主要讲述Windows平台下(Win 7 ...
随机推荐
- 【转】MyEclipse 2015优化技巧
MyEclipse 2015优化技巧 MyEclipse 2015优化速度方案仍然主要有这么几个方面:去除无需加载的模块.取消冗余的配置.去除不必要的检查.关闭更新. 第一步: 去除不需要加载的模块 ...
- 更新整理本人所有博文中提供的代码与工具(Java,2013.10)
为了更方便地管理博文中涉及的各种代码与工具资源,现在把这些资源迁移到 Google Code 中,有兴趣者可前往下载. Java 1.<高效 Java Web 应用开发框架 JessMA v3. ...
- IO流(三)__字节流 标准输入输出流 转换流
一.字节流:FileInputStream 和FileOutputStream 基本操作和字符流类相同,没有flush,但是close还是要的 复制一个字节流文件 private static voi ...
- Java IO 装饰者模式
装饰模式(Decorator) 装饰模式又名包装(Wrapper)模式. 装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案. 装饰模式通过创建一个包装对象,也就是装饰,来包裹真实的 ...
- CSS3与页面布局学习笔记(三)——BFC、定位、浮动、7种垂直居中方法
一.BFC与IFC 1.1.BFC与IFC概要 BFC(Block Formatting Context)即“块级格式化上下文”, IFC(Inline Formatting Context)即行内格 ...
- pagePiling.js - 创建漂亮的全屏滚动效果
全屏滚动效果是最近非常流行的网页设计形式,带给用户良好的视觉和交互体验.pagePiling.js 这款 jQuery 插件可以帮助前端开发人员轻松实现这种效果.支持所有的主流浏览器,包括IE8+,支 ...
- 支持10种格式的 HTML 表格导出 jQuery 插件
HTML 表格导出 jQuery 插件可以帮助用户导出 HTML 表格到 JSON.XML.PNG.CSV.TXT.SQL.MS-Word.MS-Excel.MS-PowerPoint 和 PDF 格 ...
- swift学习笔记之-方法部分
//方法部分 import UIKit //方法(Methods) /*方法是与某些特定类型相关联的函数,类.结构体.枚举都可以定义实例方法 实例方法(Instance Methods): 1.属于某 ...
- 编写更加稳定/可读的javascript代码
每个人都有自己的编程风格,也无可避免的要去感受别人的编程风格--修改别人的代码."修改别人的代码"对于我们来说的一件很痛苦的事情.因为有些代码并不是那么容易阅读.可维护的,让另一个 ...
- ADN用户的产品激活方法
如果您是ADN用户,在使用在线激活产品时遇到问题导致不能激活时,您可以采用手动激活方式. 通常采用如下两种方式. 1. (推荐)ADN用户填写此表格提交申请,同时在补充信息中提供 ADN Develo ...