-
Notifications
You must be signed in to change notification settings - Fork 0
/
tablesviewer.cpp
83 lines (63 loc) · 1.97 KB
/
tablesviewer.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include "tablesviewer.h"
#include "ui_tablesviewer.h"
TablesViewer::TablesViewer(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::TablesViewer)
{
ui->setupUi(this);
tableModel = NULL;
//initialize();
}
void TablesViewer::initialize(){
connect(ui->tablesList,SIGNAL(currentIndexChanged(QString)),this,SLOT(currentIndexChangedSlot(QString)));
connect(ui->buttonAddRowInTable,SIGNAL(clicked()),this,SLOT(addRowInTableSlot()));
if(!tableModel){
tableModel = new QSqlTableModel(this);
tableModel->setEditStrategy(QSqlTableModel::OnFieldChange);
ui->tableView->setModel(tableModel);
}
}
TablesViewer::~TablesViewer()
{
delete ui;
}
QStringList TablesViewer::getAllTablesInDB(){
QStringList listTables;
QSqlQuery query;
QString strQuery="SELECT NAME FROM sqlite_master where type = 'table'";
if(!query.exec(strQuery)){
qDebug() << "Unable to execute query - exiting";
qDebug()<<query.lastError();
return listTables;
}
while(query.next()){
QSqlRecord rec = query.record();
QString tableName = query.value(rec.indexOf("name")).toString();
if(tableName.indexOf("sqlite")==-1)
listTables.push_back(tableName);
}
return listTables;
}
void TablesViewer::show(){
ui->tablesList->clear();
ui->tablesList->addItems(getAllTablesInDB());
QWidget::show();
}
void TablesViewer::currentIndexChangedSlot(const QString text){
if(text!="------------------"){
tableModel->setTable(text);
tableModel->select();
}
else{
tableModel->clear();
ui->tableView->clearSpans();
ui->tableView->setModel(tableModel);
//ui->tableView->model()->removeColumns(TablesViewer)
//ui->tableView->model()->removeRows(ui->tableView-)
//ui->tableView->setModel(tableModel);
}
}
void TablesViewer::addRowInTableSlot(){
int row = tableModel->rowCount();
tableModel->insertRow(row);
}