Browse Source

first commit

master
mmtalaie 4 years ago
commit
f7a7a0443a
  1. 57
      .gitignore
  2. 36
      DatabaseBuilder.pro
  3. 11
      main.cpp
  4. 592
      mainwindow.cpp
  5. 87
      mainwindow.h
  6. 304
      mainwindow.ui
  7. 8
      res/Icons.qrc
  8. BIN
      res/add.png
  9. BIN
      res/column.png
  10. BIN
      res/edit.png
  11. BIN
      res/new.png
  12. 13
      state.h

57
.gitignore

@ -0,0 +1,57 @@
# C++ objects and libs
*.slo
*.lo
*.o
*.a
*.la
*.lai
*.so
*.dll
*.dylib
# Qt-es
object_script.*.Release
object_script.*.Debug
*_plugin_import.cpp
/.qmake.cache
/.qmake.stash
*.pro.user
*.pro.user.*
*.qbs.user
*.qbs.user.*
*.moc
moc_*.cpp
moc_*.h
qrc_*.cpp
ui_*.h
*.qmlc
*.jsc
Makefile*
*build-*
# Qt unit tests
target_wrapper.*
# QtCreator
*.autosave
# QtCreator Qml
*.qmlproject.user
*.qmlproject.user.*
# QtCreator CMake
CMakeLists.txt.user*
# QtCreator 4.8< compilation database
compile_commands.json
# QtCreator local machine specific files for imported projects
*creator.user*
#added be H-4nd-H to the template to comply with project needs
*.pro.dummy
bin/
doc/
*.lupdate

36
DatabaseBuilder.pro

@ -0,0 +1,36 @@
QT += core gui
QT += xml
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++11
# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
main.cpp \
mainwindow.cpp
HEADERS += \
mainwindow.h \
state.h
FORMS += \
mainwindow.ui
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
RESOURCES += \
res/Icons.qrc

11
main.cpp

@ -0,0 +1,11 @@
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}

592
mainwindow.cpp

@ -0,0 +1,592 @@
#include <QFileDialog>
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "state.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//create model
hideWidgets();
_model = new QStandardItemModel(0,1,this);
ui->treeView->setModel(_model);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::readFile()
{
_model->clear();
QStandardItem *root = new QStandardItem("root:Root");
_model->appendRow(root);
QDomDocument document;
//load file
QFile file(_fileName);
if(file.open(QIODevice::ReadOnly | QIODevice::Text))
{
document.setContent(&file);
file.close();
}
//read xml file
QDomElement xmlroot = document.firstChildElement();
QDomNodeList Databases = xmlroot.elementsByTagName("Database");
for (int i = 0; i < Databases.count(); ++i)
{
QDomElement database= Databases.at(i).toElement();
_DBElementVector.append(database);
_DBNameVector.append(database.attribute("name"));
QStandardItem *databaseItem = new QStandardItem(QString("DB : %1").arg(database.attribute("name")));
//read tables
QDomNodeList tables = database.elementsByTagName("Table");
for (int t = 0; t < tables.count(); ++t)
{
QDomElement table = tables.at(t).toElement();
QStandardItem *tableItem = new QStandardItem(QString("TBL : %1").arg(table.attribute("name")));
//read Field
QDomNodeList fields = table.elementsByTagName("Field");
for (int f = 0; f < fields.count(); ++f)
{
QDomElement field = fields.at(f).toElement();
QStandardItem *fieldItem = new QStandardItem(QString("FLD : %1").arg(field.attribute("name")));
// "Name: "+field.attribute("name") + "; Type: " + field.attribute("type") + "; Allow Null: " + field.attribute("null") + "; Is Forign key:" + field.attribute("isforeignkey"));
tableItem->appendRow(fieldItem);
}
databaseItem->appendRow(tableItem);
}
root->appendRow(databaseItem);
}
_xmlDoc = document;
}
void MainWindow::readFile(QDomDocument xmlInput)
{
_model->clear();
QStandardItem *root = new QStandardItem("root:Root");
_model->appendRow(root);
QDomDocument document;
document = xmlInput;
//read xml file
QDomElement xmlroot = document.firstChildElement();
QDomNodeList Databases = xmlroot.elementsByTagName("Database");
for (int i = 0; i < Databases.count(); ++i)
{
QDomElement database= Databases.at(i).toElement();
QStandardItem *databaseItem = new QStandardItem(QString("DB : %1").arg(database.attribute("name")));
//read tables
QDomNodeList tables = database.elementsByTagName("Table");
for (int t = 0; t < tables.count(); ++t)
{
QDomElement table = tables.at(t).toElement();
QStandardItem *tableItem = new QStandardItem(QString("TBL : %1").arg(table.attribute("name")));
//read Field
QDomNodeList fields = table.elementsByTagName("Field");
for (int f = 0; f < fields.count(); ++f)
{
QDomElement field = fields.at(f).toElement();
QStandardItem *fieldItem = new QStandardItem(QString("FLD : %1").arg(field.attribute("name")));
// "Name: "+field.attribute("name") + "; Type: " + field.attribute("type") + "; Allow Null: " + field.attribute("null") + "; Is Forign key:" + field.attribute("isforeignkey"));
tableItem->appendRow(fieldItem);
}
databaseItem->appendRow(tableItem);
}
root->appendRow(databaseItem);
}
}
void MainWindow::writeFile()
{
_fileName = QFileDialog::getSaveFileName(this);
QFile savefile(_fileName);
if(!savefile.open(QIODevice::WriteOnly | QIODevice::Text))
{
qDebug()<< "Ops! can not create file";
}
QTextStream stream(&savefile);
stream<<_xmlDoc.toString();
savefile.close();
}
void MainWindow::on_actionCreate_Database_triggered()
{
hideWidgets();
_state = eStateLevel::createDatabase;
if(_xmlDoc.isNull())
{
_root = _xmlDoc.createElement("Root");
_xmlDoc.appendChild(_root);
}
else
{
_root = _xmlDoc.firstChild().toElement();
}
readFile(_xmlDoc);
ui->label_1->setText("Database Name");
ui->label_1->show();
ui->lineEdit_1->show();
ui->Append_btn->show();
}
void MainWindow::on_actionAdd_Table_triggered()
{
if(!_xmlDoc.isNull())
{
hideWidgets();
_state = eStateLevel::createTable;
ui->label_1->setText("Table Name");
ui->label_1->show();
ui->lineEdit_1->show();
ui->Append_btn->show();
}
}
void MainWindow::on_actionAdd_Field_triggered()
{
if(!_xmlDoc.isNull() /*&& !_lastDBElement.isNull()*/)
{
hideWidgets();
_state = eStateLevel::createField;
ui->label_1->setText("Field Name :");
ui->cmbType->show();
ui->label_1->show();
ui->lineEdit_1->show();
ui->Append_btn->show();
ui->chbIsNull->show();
ui->chbIsForignKey->show();
}
}
void MainWindow::on_chbIsForignKey_stateChanged(int arg1)
{
if(arg1 > 0)
{
ui->cmbTablsName->addItem("");
for (int i = 0; i < _lastDBElement.childNodes().count(); ++i)
{
auto tblElem = _lastDBElement.childNodes().at(i);
ui->cmbTablsName->addItem(tblElem.toElement().attribute("name"));
}
ui->cmbTablsName->show();
}
else
{
ui->cmbTablsName->hide();
}
}
void MainWindow::hideWidgets()
{
ui->label_1->hide();
ui->label_2->hide();
ui->label_3->hide();
ui->label_4->hide();
ui->lineEdit_1->hide();
ui->lineEdit_2->hide();
ui->lineEdit_3->hide();
ui->lineEdit_4->hide();
ui->Append_btn->setText("Append");
ui->Append_btn->hide();
ui->cmbType->hide();
ui->chbIsNull->hide();
ui->chbIsForignKey->hide();
ui->cmbTablsName->hide();
}
void MainWindow::on_Append_btn_clicked()
{
switch (_state)
{
case eStateLevel::createDatabase:
{
_lastDBElement =_xmlDoc.createElement("Database");
auto dbName = ui->lineEdit_1->text();
_lastDBElement.setAttribute("name",dbName);
_DBElementVector.append(_lastDBElement);
_root.appendChild(_lastDBElement);
_xmlDoc.childNodes().at(0) = _root;
readFile(_xmlDoc);
hideWidgets();
ui->lineEdit_1->setText("");
break;
}
case eStateLevel::createTable:
{
_lastTableElement = _xmlDoc.createElement("Table");
auto tableName = ui->lineEdit_1->text();
_lastTableElement.setAttribute("name",tableName);
_lastDBElement.appendChild(_lastTableElement);
readFile(_xmlDoc);
ui->lineEdit_1->setText("");
hideWidgets();
break;
}
case eStateLevel::createField:
{
if(_lastTableElement.isNull() || _lastDBElement.isNull())
{
//TODO :: show mesagebox Text "Please select Database and Table"
break;
}
if(ui->lineEdit_1->text() == "")
{
//TODO :: show mesagebox Text "Please set the field name"
break;
}
auto a = ui->cmbType->currentIndex();
if(a < 1)
{
//TODO :: show mesagebox Text "Please set the Type"
break;
}
auto fieldName = ui->lineEdit_1->text();
auto field = _xmlDoc.createElement("Field");
field.setAttribute("name",fieldName);
if(ui->cmbType->currentText() == "VARCHAR")
{
field.setAttribute("type",QString("%1(%2)").arg(ui->cmbType->currentText()).arg(ui->lineEdit_2->text()));
}
else
{
field.setAttribute("type",ui->cmbType->currentText());
}
if(ui->chbIsNull->checkState() == Qt::CheckState::Unchecked)
field.setAttribute("null","NOT");
if(ui->chbIsForignKey->checkState() == Qt::CheckState::Checked)
{
field.setAttribute("isforeignkey","true");
field.setAttribute("lookuptable",ui->cmbTablsName->currentText());
field.setAttribute("lookuptable","ID");
}
else
{
field.setAttribute("isforeignkey","false");
}
_lastTableElement.appendChild(field);
readFile(_xmlDoc);
ui->lineEdit_1->setText("");
hideWidgets();
break;
}
case eStateLevel::editDatabase:
{
auto oldDB = _lastDBElement;
_lastDBElement.setAttribute("name",ui->lineEdit_1->text());
auto root = _xmlDoc.firstChildElement().replaceChild(_lastDBElement,oldDB);
readFile(_xmlDoc);
ui->lineEdit_1->setText("");
hideWidgets();
break;
}
case eStateLevel::editTable:
{
auto oldTbl = _lastTableElement;
_lastTableElement.setAttribute("name",ui->lineEdit_1->text());
auto root = _lastDBElement.replaceChild(_lastTableElement,oldTbl);
readFile(_xmlDoc);
ui->lineEdit_1->setText("");
hideWidgets();
break;
}
case eStateLevel::editField:
{
if(_lastTableElement.isNull() || _lastDBElement.isNull())
{
//TODO :: show mesagebox Text "Please select Database and Table"
break;
}
if(ui->lineEdit_1->text() == "")
{
//TODO :: show mesagebox Text "Please set the field name"
break;
}
auto a = ui->cmbType->currentIndex();
if(a < 1)
{
//TODO :: show mesagebox Text "Please set the Type"
break;
}
auto fieldName = ui->lineEdit_1->text();
auto field = _xmlDoc.createElement("Field");
field.setAttribute("name",fieldName);
if(ui->cmbType->currentText() == "VARCHAR")
{
field.setAttribute("type",QString("%1(%2)").arg(ui->cmbType->currentText()).arg(ui->lineEdit_2->text()));
}
else
{
field.setAttribute("type",ui->cmbType->currentText());
}
if(ui->chbIsNull->checkState() == Qt::CheckState::Unchecked)
field.setAttribute("null","NOT");
if(ui->chbIsForignKey->checkState() == Qt::CheckState::Checked)
{
field.setAttribute("isforeignkey","true");
field.setAttribute("lookuptable",ui->cmbTablsName->currentText());
field.setAttribute("lookuptable","ID");
}
else
{
field.setAttribute("isforeignkey","false");
}
auto oldFld = _lastFieldElement;
_lastTableElement.replaceChild(field,oldFld);
readFile(_xmlDoc);
ui->lineEdit_1->setText("");
hideWidgets();
break;
}
default:
break;
}
}
void MainWindow::on_cmbTablsName_currentIndexChanged(int index)
{
if(ui->chbIsForignKey->checkState() == Qt::CheckState::Checked)
{
if(index > 0 )
{
ui->lineEdit_1->setText(QString("%1_id").arg(ui->cmbTablsName->currentText()));
ui->cmbType->setCurrentIndex(1);
}
}
}
void MainWindow::on_treeView_doubleClicked(const QModelIndex &index)
{
hideWidgets();
auto type = getElementType(index);
switch (type)
{
case MainWindow::eElementType::root :
{
break;
}
case MainWindow::eElementType::database :
{
_state = MainWindow::eStateLevel::editDatabase;
for (int i = 0; i < _xmlDoc.firstChild().childNodes().count(); ++i)
{
if( _xmlDoc.firstChild().childNodes().at(i).toElement().attribute("name") == index.data().toString().split(" : ").at(1))
{
_lastDBElement = _xmlDoc.firstChild().childNodes().at(i).toElement();
ui->label_1->setText("Database Name: ");
ui->label_1->show();
ui->lineEdit_1->setText(_xmlDoc.firstChild().childNodes().at(i).toElement().attribute("name"));
ui->lineEdit_1->show();
ui->Append_btn->setText("edit");
ui->Append_btn->show();
break;
}
}
// _lastDBElement.clear();
break;
}
case MainWindow::eElementType::table :
{
_state = MainWindow::eStateLevel::editTable;
auto database = index.parent();
_lastDBElement.clear();
for (int i = 0; i < _xmlDoc.firstChild().childNodes().count(); ++i)
{
if(_xmlDoc.firstChild().childNodes().at(i).toElement().attribute("name") == database.data().toString().split(" : ").at(1))
{
_lastDBElement = _xmlDoc.firstChild().childNodes().at(i).toElement();
break;
}
}
for (int i = 0; i < _lastDBElement.childNodes().count(); ++i)
{
auto tblItem = _lastDBElement.childNodes().at(i);
_lastTableElement.clear();
auto elem = tblItem.toElement();
if(elem.attribute("name") == index.data().toString().split(" : ").at(1))
{
_lastTableElement = elem;
ui->label_1->setText("Table Name: ");
ui->label_1->show();
ui->lineEdit_1->setText(elem.attribute("name"));
ui->lineEdit_1->show();
ui->Append_btn->setText("edit");
ui->Append_btn->show();
break;
}
}
break;
}
case MainWindow::eElementType::field :
{
_state = MainWindow::eStateLevel::editField;
auto table = index.parent();
auto database = table.parent();
_lastDBElement.clear();
for (int i = 0; i < _xmlDoc.firstChild().childNodes().count(); ++i)
{
if(_xmlDoc.firstChild().childNodes().at(i).toElement().attribute("name") == database.data().toString().split(" : ").at(1))
{
_lastDBElement = _xmlDoc.firstChild().childNodes().at(i).toElement();
break;
}
}
for (int i = 0; i < _lastDBElement.childNodes().count(); ++i)
{
auto tblelem = _lastDBElement.childNodes().at(i).toElement();
_lastTableElement.clear();
if(tblelem.attribute("name") == table.data().toString().split(" : ").at(1))
{
_lastTableElement = tblelem;
break;
}
}
for (int i = 0; i < _lastTableElement.childNodes().count(); ++i)
{
_lastFieldElement = _lastTableElement.childNodes().at(i).toElement();
if(_lastFieldElement.attribute("name") == index.data().toString().split(" : ").at(1))
{
ui->label_1->setText("Field Name: ");
ui->label_1->show();
ui->lineEdit_1->setText(_lastFieldElement.attribute("name"));
ui->lineEdit_1->show();
ui->Append_btn->setText("edit");
if(_lastFieldElement.attribute("type") == "INTEGER")
ui->cmbType->setCurrentText("INT");
else if(_lastFieldElement.attribute("type").toLower().contains("varchar"))
{
ui->cmbType->setCurrentText("VARCHAR");
auto size = _lastFieldElement.attribute("type").toLower().split("(").at(1);
size.replace(")","");
ui->lineEdit_2->setText(size);
ui->lineEdit_2->show();
}
else
ui->cmbType->setCurrentText(_lastFieldElement.attribute("type"));
ui->cmbType->show();
if(_lastFieldElement.attribute("null") == "NOT")
ui->chbIsNull->setCheckState(Qt::CheckState::Unchecked);
else
{
ui->chbIsNull->setCheckState(Qt::CheckState::Checked);
}
ui->chbIsNull->show();
if(_lastFieldElement.attribute("isforeignkey") == "true")
{
ui->chbIsForignKey->show();
ui->cmbTablsName->show();
ui->chbIsForignKey->setCheckState(Qt::CheckState::Checked);
ui->cmbTablsName->setCurrentText(_lastFieldElement.attribute("lookuptable"));
}
else
{
ui->chbIsForignKey->setCheckState(Qt::CheckState::Unchecked);
}
ui->Append_btn->show();
}
}
break;
}
}
int a = index.row();
int b = index.column();
auto parent = index.parent();
auto par0 = parent.parent();
auto ac = index.data();
qDebug()<<parent.data() << " " << par0.data();
}
MainWindow::eElementType MainWindow::getElementType(QModelIndex indInput)
{
auto dataSptd = indInput.data().toString().split(" : ");
if(dataSptd.at(0) == "root")
return MainWindow::eElementType::root;
else if(dataSptd.at(0) == "DB")
return MainWindow::eElementType::database;
else if(dataSptd.at(0) == "TBL")
return MainWindow::eElementType::table;
else if(dataSptd.at(0) == "FLD")
return MainWindow::eElementType::field;
else
return MainWindow::eElementType::unknown;
}
void MainWindow::on_cmbType_currentTextChanged(const QString &arg1)
{
if(arg1 == "VARCHAR")
{
ui->lineEdit_2->show();
ui->label_2->setText("Len :");
ui->label_2->show();
ui->lineEdit_2->setText("200");
}
else
{
ui->lineEdit_2->hide();
ui->label_2->setText("Len :");
ui->label_2->hide();
ui->lineEdit_2->setText("200");
}
}
void MainWindow::on_actionsave_triggered()
{
writeFile();
}
void MainWindow::on_actionEdit_Database_triggered()
{
_fileName = QFileDialog::getOpenFileName(this,
tr("Open XML file"), "/home/",
tr("Address XML (*.xml);;All Files (*)"));
readFile();
}

87
mainwindow.h

@ -0,0 +1,87 @@
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QtCore>
#include <QtGui>
#include <QtXml>
#include <QDebug>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
enum eStateLevel: quint8
{
createRoot,
createDatabase,
createTable,
createField,
editDatabase,
editTable,
editField
};
enum eElementType:quint8
{
root,
database,
table,
field,
unknown
};
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_actionCreate_Database_triggered();
void on_Append_btn_clicked();
void on_actionAdd_Table_triggered();
void on_actionAdd_Field_triggered();
void on_chbIsForignKey_stateChanged(int arg1);
void on_cmbTablsName_currentIndexChanged(int index);
void on_treeView_doubleClicked(const QModelIndex &index);
void on_cmbType_currentTextChanged(const QString &arg1);
void on_actionsave_triggered();
void on_actionEdit_Database_triggered();
private:
Ui::MainWindow *ui;
QStandardItemModel *_model;
QString _fileName;
int _state = 0;
QDomDocument _xmlDoc;
QString _xmlAddress;
QDomElement _root;
QVector<QString> _DBNameVector;
QVector<QDomElement> _DBElementVector;
QDomElement _lastDBElement;
QDomElement _lastTableElement;
QDomElement _lastFieldElement;
QDomElement* _lastDBPointer;
void readFile();
void readFile(QDomDocument xmlInput);
void writeFile();
void hideWidgets();
eElementType getElementType(QModelIndex indInput);
};
#endif // MAINWINDOW_H

304
mainwindow.ui

@ -0,0 +1,304 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QTreeView" name="treeView">
<property name="geometry">
<rect>
<x>0</x>
<y>180</y>
<width>791</width>
<height>331</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>1</horstretch>
<verstretch>1</verstretch>
</sizepolicy>
</property>
<property name="sizeAdjustPolicy">
<enum>QAbstractScrollArea::AdjustToContents</enum>
</property>
</widget>
<widget class="QPushButton" name="Append_btn">
<property name="geometry">
<rect>
<x>600</x>
<y>150</y>
<width>89</width>
<height>25</height>
</rect>
</property>
<property name="text">
<string>Append</string>
</property>
</widget>
<widget class="QLabel" name="label_1">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>181</width>
<height>17</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_1">
<property name="geometry">
<rect>
<x>203</x>
<y>10</y>
<width>84</width>
<height>25</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label_2">
<property name="geometry">
<rect>
<x>510</x>
<y>10</y>
<width>67</width>
<height>17</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_2">
<property name="geometry">
<rect>
<x>600</x>
<y>10</y>
<width>136</width>
<height>25</height>
</rect>
</property>
</widget>
<widget class="QCheckBox" name="chbIsNull">
<property name="geometry">
<rect>
<x>291</x>
<y>10</y>
<width>95</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>Allow Null</string>
</property>
</widget>
<widget class="QComboBox" name="cmbType">
<property name="geometry">
<rect>
<x>390</x>
<y>10</y>
<width>100</width>
<height>25</height>
</rect>
</property>
<item>
<property name="text">
<string/>
</property>
</item>
<item>
<property name="text">
<string>INT</string>
</property>
</item>
<item>
<property name="text">
<string>BOOLEAN</string>
</property>
</item>
<item>
<property name="text">
<string>DOUBLE</string>
</property>
</item>
<item>
<property name="text">
<string>VARCHAR</string>
</property>
</item>
</widget>
<widget class="QCheckBox" name="chbIsForignKey">
<property name="geometry">
<rect>
<x>10</x>
<y>70</y>
<width>101</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>IsForignKey</string>
</property>
</widget>
<widget class="QComboBox" name="cmbTablsName">
<property name="geometry">
<rect>
<x>150</x>
<y>70</y>
<width>131</width>
<height>25</height>
</rect>
</property>
</widget>
<widget class="QSplitter" name="splitter">
<property name="geometry">
<rect>
<x>70</x>
<y>150</y>
<width>418</width>
<height>25</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<widget class="QLabel" name="label_3">
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_3"/>
<widget class="QLabel" name="label_4">
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_4"/>
</widget>
<widget class="QPushButton" name="cancel_btn">
<property name="geometry">
<rect>
<x>700</x>
<y>150</y>
<width>89</width>
<height>25</height>
</rect>
</property>
<property name="text">
<string>Cancel</string>
</property>
</widget>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>22</height>
</rect>
</property>
<widget class="QMenu" name="menuFile">
<property name="title">
<string>File</string>
</property>
<addaction name="actionCreate_Database"/>
<addaction name="actionEdit_Database"/>
<addaction name="actionsave"/>
<addaction name="actionclese"/>
</widget>
<addaction name="menuFile"/>
</widget>
<widget class="QStatusBar" name="statusbar"/>
<widget class="QToolBar" name="toolBar">
<property name="windowTitle">
<string>toolBar</string>
</property>
<attribute name="toolBarArea">
<enum>TopToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
<addaction name="actionCreate_Database"/>
<addaction name="actionEdit_Database"/>
<addaction name="actionAdd_Table"/>
<addaction name="actionAdd_Field"/>
</widget>
<action name="actionCreate_Database">
<property name="icon">
<iconset resource="res/Icons.qrc">
<normaloff>:/Icons/new.png</normaloff>:/Icons/new.png</iconset>
</property>
<property name="text">
<string>Create Database</string>
</property>
<property name="shortcut">
<string>Ctrl+D</string>
</property>
</action>
<action name="actionEdit_Database">
<property name="icon">
<iconset resource="res/Icons.qrc">
<normaloff>:/Icons/edit.png</normaloff>:/Icons/edit.png</iconset>
</property>
<property name="text">
<string>Edit Database</string>
</property>
</action>
<action name="actionclese">
<property name="text">
<string>close</string>
</property>
<property name="toolTip">
<string>close</string>
</property>
</action>
<action name="actionAdd_Table">
<property name="icon">
<iconset resource="res/Icons.qrc">
<normaloff>:/Icons/add.png</normaloff>:/Icons/add.png</iconset>
</property>
<property name="text">
<string>Add Table</string>
</property>
<property name="shortcut">
<string>Ctrl+T</string>
</property>
</action>
<action name="actionAdd_Field">
<property name="icon">
<iconset resource="res/Icons.qrc">
<normaloff>:/Icons/column.png</normaloff>:/Icons/column.png</iconset>
</property>
<property name="text">
<string>Add Field</string>
</property>
<property name="shortcut">
<string>Ctrl+F</string>
</property>
</action>
<action name="actionsave">
<property name="text">
<string>save</string>
</property>
</action>
</widget>
<resources>
<include location="res/Icons.qrc"/>
</resources>
<connections/>
</ui>

8
res/Icons.qrc

@ -0,0 +1,8 @@
<RCC>
<qresource prefix="/Icons">
<file>new.png</file>
<file>edit.png</file>
<file>column.png</file>
<file>add.png</file>
</qresource>
</RCC>

BIN
res/add.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
res/column.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

BIN
res/edit.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
res/new.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

13
state.h

@ -0,0 +1,13 @@
#ifndef STATE_H
#define STATE_H
#include <QtCore>
//class EnumsLebel :public QObject
//{
//public:
// Q_ENUM(eStateLevel)
//};
#endif // STATE_H
Loading…
Cancel
Save