From e3fa55f51f1302e3d175ec87d9334026060b2996 Mon Sep 17 00:00:00 2001 From: Hottgenroth Date: Fri, 11 Jun 2021 19:26:43 +0200 Subject: [PATCH] initial --- .gitignore | 5 + relationaltablemodel/main.cpp | 36 ++ relationaltablemodel/mainwindow.cpp | 21 ++ relationaltablemodel/mainwindow.h | 24 ++ relationaltablemodel/mainwindow.ui | 42 +++ relationaltablemodel/mytablemodel.cpp | 21 ++ relationaltablemodel/mytablemodel.h | 15 + relationaltablemodel/relationaltablemodel.pro | 26 ++ .../relationaltablemodel.pro.user | 321 ++++++++++++++++++ 9 files changed, 511 insertions(+) create mode 100644 .gitignore create mode 100644 relationaltablemodel/main.cpp create mode 100644 relationaltablemodel/mainwindow.cpp create mode 100644 relationaltablemodel/mainwindow.h create mode 100644 relationaltablemodel/mainwindow.ui create mode 100644 relationaltablemodel/mytablemodel.cpp create mode 100644 relationaltablemodel/mytablemodel.h create mode 100644 relationaltablemodel/relationaltablemodel.pro create mode 100644 relationaltablemodel/relationaltablemodel.pro.user diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ef8491a --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +build-*/ +*~ +~* +.*~ + diff --git a/relationaltablemodel/main.cpp b/relationaltablemodel/main.cpp new file mode 100644 index 0000000..b6e26d2 --- /dev/null +++ b/relationaltablemodel/main.cpp @@ -0,0 +1,36 @@ +#include "mainwindow.h" + +#include +#include +#include +#include + + +static bool createConnection() +{ + QSqlDatabase db = QSqlDatabase::addDatabase("QODBC3"); + db.setDatabaseName("MyTableViewTest"); + + if (!db.open()) { + QMessageBox::critical(nullptr, QObject::tr("Cannot open database"), + QObject::tr("Unable to establish a database connection.\n" + "Click Cancel to exit."), QMessageBox::Cancel); + return false; + } + + return true; +} + + +int main(int argc, char *argv[]) { + QApplication a(argc, argv); + + if (!createConnection()) + return EXIT_FAILURE; + + + + MainWindow w; + w.show(); + return a.exec(); +} diff --git a/relationaltablemodel/mainwindow.cpp b/relationaltablemodel/mainwindow.cpp new file mode 100644 index 0000000..c2cc709 --- /dev/null +++ b/relationaltablemodel/mainwindow.cpp @@ -0,0 +1,21 @@ +#include "mainwindow.h" +#include "ui_mainwindow.h" +#include "mytablemodel.h" + + +MainWindow::MainWindow(QWidget *parent) + : QMainWindow(parent), ui(new Ui::MainWindow) { + ui->setupUi(this); + + myTableModel = new MyTableModel(); + myTableModel->init(); + + ui->MyTableViewName->setModel(myTableModel); + ui->MyTableViewName->setItemDelegate(new QSqlRelationalDelegate(ui->MyTableViewName)); + ui->MyTableViewName->setWindowTitle("MyTableView"); +} + +MainWindow::~MainWindow() { + delete ui; +} + diff --git a/relationaltablemodel/mainwindow.h b/relationaltablemodel/mainwindow.h new file mode 100644 index 0000000..57476ee --- /dev/null +++ b/relationaltablemodel/mainwindow.h @@ -0,0 +1,24 @@ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include +#include "mytablemodel.h" + +QT_BEGIN_NAMESPACE +namespace Ui { class MainWindow; } +QT_END_NAMESPACE + +class MainWindow : public QMainWindow +{ + Q_OBJECT + +public: + MainWindow(QWidget *parent = nullptr); + ~MainWindow(); + +private: + Ui::MainWindow *ui; + MyTableModel *myTableModel; + +}; +#endif // MAINWINDOW_H diff --git a/relationaltablemodel/mainwindow.ui b/relationaltablemodel/mainwindow.ui new file mode 100644 index 0000000..148c47f --- /dev/null +++ b/relationaltablemodel/mainwindow.ui @@ -0,0 +1,42 @@ + + + MainWindow + + + + 0 + 0 + 800 + 600 + + + + MainWindow + + + + + + 40 + 40 + 711 + 481 + + + + + + + + 0 + 0 + 800 + 21 + + + + + + + + diff --git a/relationaltablemodel/mytablemodel.cpp b/relationaltablemodel/mytablemodel.cpp new file mode 100644 index 0000000..60ee0b9 --- /dev/null +++ b/relationaltablemodel/mytablemodel.cpp @@ -0,0 +1,21 @@ +#include "mytablemodel.h" + + +MyTableModel::MyTableModel(QObject *parent) : QSqlRelationalTableModel(parent) { + +} + +void MyTableModel::init() { + setTable("employee"); + + setEditStrategy(QSqlTableModel::OnRowChange); + setRelation(2, QSqlRelation("city", "id", "name")); + setRelation(3, QSqlRelation("country", "id", "name")); + + setHeaderData(0, Qt::Horizontal, QObject::tr("ID")); + setHeaderData(1, Qt::Horizontal, QObject::tr("Name")); + setHeaderData(2, Qt::Horizontal, QObject::tr("City")); + setHeaderData(3, Qt::Horizontal, QObject::tr("Country")); + + select(); +} diff --git a/relationaltablemodel/mytablemodel.h b/relationaltablemodel/mytablemodel.h new file mode 100644 index 0000000..62b390c --- /dev/null +++ b/relationaltablemodel/mytablemodel.h @@ -0,0 +1,15 @@ +#ifndef MYTABLEMODEL_H +#define MYTABLEMODEL_H + +#include +#include + +class MyTableModel : public QSqlRelationalTableModel { + Q_OBJECT +public: + MyTableModel(QObject *parent = nullptr); + void init(); +}; + + +#endif // MYTABLEMODEL_H diff --git a/relationaltablemodel/relationaltablemodel.pro b/relationaltablemodel/relationaltablemodel.pro new file mode 100644 index 0000000..b384fac --- /dev/null +++ b/relationaltablemodel/relationaltablemodel.pro @@ -0,0 +1,26 @@ +QT += sql core gui + +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets + +CONFIG += c++11 + +# You can make your code fail to compile if it uses deprecated APIs. +# In order to do so, uncomment the following line. +#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 + +SOURCES += \ + main.cpp \ + mainwindow.cpp \ + mytablemodel.cpp + +HEADERS += \ + mainwindow.h \ + mytablemodel.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 diff --git a/relationaltablemodel/relationaltablemodel.pro.user b/relationaltablemodel/relationaltablemodel.pro.user new file mode 100644 index 0000000..5e8a399 --- /dev/null +++ b/relationaltablemodel/relationaltablemodel.pro.user @@ -0,0 +1,321 @@ + + + + + + EnvironmentId + {18ed5fae-bd70-40d3-983b-c57eee836dde} + + + ProjectExplorer.Project.ActiveTarget + 0 + + + ProjectExplorer.Project.EditorSettings + + true + false + true + + Cpp + + CppGlobal + + + + QmlJS + + QmlJSGlobal + + + 2 + UTF-8 + false + 4 + false + 80 + true + true + 1 + false + true + false + 0 + true + true + 0 + 8 + true + false + 1 + true + true + true + *.md, *.MD, Makefile + false + true + + + + ProjectExplorer.Project.PluginSettings + + + true + false + true + true + true + true + + + 0 + true + + -fno-delayed-template-parsing + + true + Builtin.BuildSystem + + true + true + Builtin.DefaultTidyAndClazy + 4 + + + + true + + + + + ProjectExplorer.Project.Target.0 + + Desktop + Desktop Qt 5.12.11 MinGW 64-bit + Desktop Qt 5.12.11 MinGW 64-bit + qt.qt5.51211.win64_mingw73_kit + 0 + 0 + 0 + + 0 + C:\Users\dehottgw\workspaces\workspace-private\myfirstqt\build-relationaltablemodel-Desktop_Qt_5_12_11_MinGW_64_bit-Debug + C:/Users/dehottgw/workspaces/workspace-private/myfirstqt/build-relationaltablemodel-Desktop_Qt_5_12_11_MinGW_64_bit-Debug + + + true + QtProjectManager.QMakeBuildStep + false + + + + true + Qt4ProjectManager.MakeStep + + 2 + Erstellen + Erstellen + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + clean + + 1 + Bereinigen + Bereinigen + ProjectExplorer.BuildSteps.Clean + + 2 + false + + + Debug + Qt4ProjectManager.Qt4BuildConfiguration + 2 + + + C:\Users\dehottgw\workspaces\workspace-private\myfirstqt\build-relationaltablemodel-Desktop_Qt_5_12_11_MinGW_64_bit-Release + C:/Users/dehottgw/workspaces/workspace-private/myfirstqt/build-relationaltablemodel-Desktop_Qt_5_12_11_MinGW_64_bit-Release + + + true + QtProjectManager.QMakeBuildStep + false + + + + true + Qt4ProjectManager.MakeStep + + 2 + Erstellen + Erstellen + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + clean + + 1 + Bereinigen + Bereinigen + ProjectExplorer.BuildSteps.Clean + + 2 + false + + + Release + Qt4ProjectManager.Qt4BuildConfiguration + 0 + 0 + + + 0 + C:\Users\dehottgw\workspaces\workspace-private\myfirstqt\build-relationaltablemodel-Desktop_Qt_5_12_11_MinGW_64_bit-Profile + C:/Users/dehottgw/workspaces/workspace-private/myfirstqt/build-relationaltablemodel-Desktop_Qt_5_12_11_MinGW_64_bit-Profile + + + true + QtProjectManager.QMakeBuildStep + false + + + + true + Qt4ProjectManager.MakeStep + + 2 + Erstellen + Erstellen + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + clean + + 1 + Bereinigen + Bereinigen + ProjectExplorer.BuildSteps.Clean + + 2 + false + + + Profile + Qt4ProjectManager.Qt4BuildConfiguration + 0 + 0 + 0 + + 3 + + + 0 + Deployment + Deployment + ProjectExplorer.BuildSteps.Deploy + + 1 + + false + ProjectExplorer.DefaultDeployConfiguration + + 1 + + dwarf + + cpu-cycles + + + 250 + + -e + cpu-cycles + --call-graph + dwarf,4096 + -F + 250 + + -F + true + 4096 + false + false + 1000 + + true + + + false + false + false + false + true + 0.01 + 10 + true + kcachegrind + 1 + + 25 + + 1 + true + false + true + + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + + 2 + + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/dehottgw/workspaces/workspace-private/myfirstqt/relationaltablemodel/relationaltablemodel.pro + C:/Users/dehottgw/workspaces/workspace-private/myfirstqt/relationaltablemodel/relationaltablemodel.pro + false + true + true + false + true + C:/Users/dehottgw/workspaces/workspace-private/myfirstqt/build-relationaltablemodel-Desktop_Qt_5_12_11_MinGW_64_bit-Debug + + 1 + + + + ProjectExplorer.Project.TargetCount + 1 + + + ProjectExplorer.Project.Updater.FileVersion + 22 + + + Version + 22 + +