Add SQLHelper and CenterAlignSqlTableModel. The CenterAlignSqlTableModel only make the cell text align center.
This commit is contained in:
5
src/db/CenterAlignSqlTableModel.cpp
Normal file
5
src/db/CenterAlignSqlTableModel.cpp
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
//
|
||||||
|
// Created by Krad on 2021/10/11.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "CenterAlignSqlTableModel.h"
|
||||||
25
src/db/CenterAlignSqlTableModel.h
Normal file
25
src/db/CenterAlignSqlTableModel.h
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
//
|
||||||
|
// Created by Krad on 2021/10/11.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef GUI_CENTERALIGNSQLTABLEMODEL_H
|
||||||
|
#define GUI_CENTERALIGNSQLTABLEMODEL_H
|
||||||
|
|
||||||
|
#include <QSqlTableModel>
|
||||||
|
class CenterAlignSqlTableModel:public QSqlTableModel {
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit CenterAlignSqlTableModel(QObject *parent = nullptr, QSqlDatabase db = QSqlDatabase()):QSqlTableModel(parent,db){};
|
||||||
|
~CenterAlignSqlTableModel(){};
|
||||||
|
protected:
|
||||||
|
QVariant data(const QModelIndex& index, int role) const override {
|
||||||
|
if (index.column() >0 && role == Qt::TextAlignmentRole) {
|
||||||
|
return Qt::AlignCenter;
|
||||||
|
} else {
|
||||||
|
return QSqlTableModel::data(index,role);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif //GUI_CENTERALIGNSQLTABLEMODEL_H
|
||||||
45
src/db/SQLHelper.cpp
Normal file
45
src/db/SQLHelper.cpp
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
//
|
||||||
|
// Created by Krad on 2021/10/11.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "SQLHelper.h"
|
||||||
|
|
||||||
|
#include <QSqlDatabase>
|
||||||
|
#include <QSqlQuery>
|
||||||
|
QSqlDatabase* SQLHelper::defaultDatabase= nullptr;
|
||||||
|
QHash<QString,CenterAlignSqlTableModel*>* SQLHelper::cache= new QHash<QString,CenterAlignSqlTableModel*>;
|
||||||
|
bool SQLHelper::Open() {
|
||||||
|
if (defaultDatabase) return true;
|
||||||
|
defaultDatabase= new QSqlDatabase(QSqlDatabase::addDatabase("QSQLITE", "USCTDB"));
|
||||||
|
defaultDatabase->setDatabaseName("USCTDB.data");
|
||||||
|
return defaultDatabase->open();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SQLHelper::Open(QSqlDatabase *base) {
|
||||||
|
if(base && base != defaultDatabase){
|
||||||
|
defaultDatabase = base;
|
||||||
|
}
|
||||||
|
return defaultDatabase->open();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SQLHelper::Close() {
|
||||||
|
for(auto item : cache->values())
|
||||||
|
{
|
||||||
|
delete item;
|
||||||
|
}
|
||||||
|
cache->clear();
|
||||||
|
if(defaultDatabase->isValid() && defaultDatabase->isOpen())
|
||||||
|
{
|
||||||
|
defaultDatabase->close();
|
||||||
|
delete defaultDatabase;
|
||||||
|
defaultDatabase = nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QSqlTableModel* SQLHelper::getTable(const QString &tableName) {
|
||||||
|
if (cache->contains(tableName)) return (*cache)[tableName];
|
||||||
|
CenterAlignSqlTableModel *model = new CenterAlignSqlTableModel(nullptr,*defaultDatabase);
|
||||||
|
model->setTable(tableName);
|
||||||
|
(*cache)[tableName] = model;
|
||||||
|
return (*cache)[tableName];
|
||||||
|
}
|
||||||
25
src/db/SQLHelper.h
Normal file
25
src/db/SQLHelper.h
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
//
|
||||||
|
// Created by Krad on 2021/10/11.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef GUI_SQLHELPER_H
|
||||||
|
#define GUI_SQLHELPER_H
|
||||||
|
|
||||||
|
class QSqlDatabase;
|
||||||
|
#include "CenterAlignSqlTableModel.h"
|
||||||
|
#include <QString>
|
||||||
|
#include <QHash>
|
||||||
|
|
||||||
|
class SQLHelper {
|
||||||
|
public:
|
||||||
|
static bool Open();
|
||||||
|
static bool Open(QSqlDatabase* base);
|
||||||
|
static void Close();
|
||||||
|
static QSqlTableModel* getTable(const QString & tableName);
|
||||||
|
private:
|
||||||
|
static QSqlDatabase* defaultDatabase;
|
||||||
|
static QHash<QString,CenterAlignSqlTableModel*>* cache;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif //GUI_SQLHELPER_H
|
||||||
Reference in New Issue
Block a user