基於Qt5.5.0的sql,C++備忘錄軟件的編寫

個人第一個軟件。html

基於Qt5.5.0的 sql ,C++備忘錄軟件version1.0的編寫ios

我用的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便可。web

話很少說,第一先是基於Qt5.5.0的sql的配置,這裏詳見個人另一篇博客:http://www.cnblogs.com/xiaobo-Linux/p/4674986.htmlsql

 

此時,sql環境配置好,編寫代碼。數據庫

 

附上個人代碼:windows

 

 

            ++++++++++++++++++project.pro裏面的代碼++++++++++++++++app

 

 

#-------------------------------------------------
#
# 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代碼+++++++++++++++++++++++++++++ui

 

#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代碼+++++++++++++++++this

 

#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

相關文章
相關標籤/搜索