Add SQLHelper and CenterAlignSqlTableModel. The CenterAlignSqlTableModel only make the cell text align center.

This commit is contained in:
Krad
2021-10-12 10:23:34 +08:00
parent b072db0c4a
commit a8ad054331
4 changed files with 100 additions and 0 deletions

View File

@@ -0,0 +1,5 @@
//
// Created by Krad on 2021/10/11.
//
#include "CenterAlignSqlTableModel.h"

View 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
View 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
View 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