Qt视频直播软件--项目实战(Day3)
生活随笔
收集整理的這篇文章主要介紹了
Qt视频直播软件--项目实战(Day3)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
第三天項目日記
1、今日總結
今天繼續寫服務器
1)客戶端要有一個登錄的功能,所以服務器要連接數據庫(這里用的時sqlite3)
2)實現了數據庫的單例
3)在啟動客戶端時如果沒有該數據庫就創建該數據庫,創建的數據庫在程序運行路徑
4)如果數據庫中沒有用戶表就創建表
2、設計思路
因為數據庫只有一個并且只有服務器會用,所以就直接寫成單例模式,并且寫自己的函數接口,供主窗口函數調用。
3、代碼說明
dbhelper.h
#ifndef DBHELPER_H #define DBHELPER_H#include <QObject> #include <QWidget> #include <QtSql/QSqlDatabase> #include <QSqlQuery> #include <QSqlError>class dbhelper { private:dbhelper(QString driver);static dbhelper* instance;QSqlDatabase *db; // QSqlQuery *query;QString driver; public:static dbhelper *getIntance(QString);//傳遞驅動void setDatabaseName(QString); //傳遞路徑void create_user_table();//創建表bool open();//打開void close();//關閉 };#endif // DBHELPER_Hdbhelper.cpp
#include "dbhelper.h" #include <QDebug>dbhelper::dbhelper(QString driver) {db = new QSqlDatabase;*db = QSqlDatabase::addDatabase(driver); }dbhelper *dbhelper::getIntance(QString driver) {if(instance == NULL){instance = new dbhelper(driver);instance->driver = driver;}return instance; }void dbhelper::setDatabaseName(QString db_path) {QString db_name = db_path + "/db.db";db->setDatabaseName(db_name); }void dbhelper::create_user_table() {QSqlQuery query(*db);query.exec("CREATE TABLE IF NOT EXISTS user (""id INTEGER PRIMARY KEY AUTOINCREMENT, ""name VARCHAR(50) NOT NULL, ""pswd VARCHAR(50) NOT NULL, ""state INTEGER DEFAULT(0))"); }bool dbhelper::open() {bool ret = db->open();return ret; }void dbhelper::close() {db->close(); }其他
添加服務器退出時的日志,只有開啟時,再退出才會寫關閉日志
寫到析構函數里面
增加了一個事件顯示label用來QTimer用來顯示實時事件
數據庫的初始化
4、項目文件
源代碼鏈接.
5、效果展示
測試如下,在沒有數據庫的情況下,自動生成數據庫數據表。
點擊關閉之后會記錄日志
當前時間也會一直顯示
有一個小問題就是關閉mainwindow之后程序還沒有退出,需要重寫一下closeEvent即可
,代碼中已經進行了修改。
6、每日總結
學會使用的Qt庫 QSqlDatabase QSqlQuery QSqlError
有志者,事竟成!!!!!!
總結
以上是生活随笔為你收集整理的Qt视频直播软件--项目实战(Day3)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 日历代码的完整版
- 下一篇: 【06年博文搬家】查看本机的瑞星序列号