diff options
Diffstat (limited to 'examples/sql/relationaltablemodel/relationaltablemodel.py')
-rw-r--r-- | examples/sql/relationaltablemodel/relationaltablemodel.py | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/examples/sql/relationaltablemodel/relationaltablemodel.py b/examples/sql/relationaltablemodel/relationaltablemodel.py new file mode 100644 index 000000000..d2efac2dc --- /dev/null +++ b/examples/sql/relationaltablemodel/relationaltablemodel.py @@ -0,0 +1,77 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +"""PySide6 port of the relationaltablemodel example from Qt v6.x""" + +import sys + +import connection + +from PySide6.QtCore import QObject, Qt +from PySide6.QtSql import (QSqlQuery, QSqlRelation, QSqlRelationalDelegate, + QSqlRelationalTableModel) +from PySide6.QtWidgets import QApplication, QTableView + + +def initializeModel(model): + + model.setTable("employee") + model.setEditStrategy(QSqlRelationalTableModel.OnManualSubmit) + model.setRelation(2, QSqlRelation("city", "id", "name")) + model.setRelation(3, QSqlRelation("country", "id", "name")) + model.setHeaderData(0, Qt.Horizontal, QObject().tr("ID")) + + model.setHeaderData(1, Qt.Horizontal, QObject().tr("Name")) + model.setHeaderData(2, Qt.Horizontal, QObject().tr("City")) + model.setHeaderData(3, Qt.Horizontal, QObject().tr("Country")) + + model.select() + + +def createView(title, model): + + table_view = QTableView() + table_view.setModel(model) + table_view.setItemDelegate(QSqlRelationalDelegate(table_view)) + table_view.setWindowTitle(title) + + return table_view + + +def createRelationalTables(): + + query = QSqlQuery() + + query.exec("create table employee(id int primary key, name varchar(20), city int, country int)") + query.exec("insert into employee values(1, 'Espen', 5000, 47)") + query.exec("insert into employee values(2, 'Harald', 80000, 49)") + query.exec("insert into employee values(3, 'Sam', 100, 1)") + + query.exec("create table city(id int, name varchar(20))") + query.exec("insert into city values(100, 'San Jose')") + query.exec("insert into city values(5000, 'Oslo')") + query.exec("insert into city values(80000, 'Munich')") + + query.exec("create table country(id int, name varchar(20))") + query.exec("insert into country values(1, 'USA')") + query.exec("insert into country values(47, 'Norway')") + query.exec("insert into country values(49, 'Germany')") + + +if __name__ == "__main__": + app = QApplication(sys.argv) + + connection.createConnection() + createRelationalTables() + + model = QSqlRelationalTableModel() + + initializeModel(model) + + title = "Relational Table Model" + + window = createView(title, model) + window.resize(600, 200) + window.show() + + sys.exit(app.exec()) |