数据库存储树形数据,并提供操作界面QTreeView

一个简单的树形数据存储在数据库,然后用Qt 进行界面显示和添加、删除、编辑的例子

存储数据采用id,pid形式,(sn表示兄弟中的排行,但未实现)

读取数据库数据添加到QTreeView,调用了递归函数。

删除节点,只允许没有子节点的结对被删除,避免操作失误。

下图是数据库结构和软件界面。

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QStandardItemModel>
#include <QStringList>
#include <QSqlDatabase> //QSqlQuery
#include <QSqlQuery>

#include <QMessageBox>
#include <QSqlError>
#include <QHeaderView>


namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

    QStandardItemModel *stdModel;

private slots:

    void on_Add();
    void on_Delete();
    void on_Edit(QStandardItem*);
    void onTreeClicked(const QModelIndex &);

    bool openDB();//打开数据库
  //  void initModel();
   void  fillModelFromDB();//数据库内容填充模型
   void addSonToModel(int pid,QStandardItem* parent)
  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
QTreeViewQt 框架中的一个控件,可以用于显示树形结构的数据。在数据库应用程序中,我们可以使用 QTreeView 显示数据库中的数据,通常使用 QStandardItemModel 作为数据模型。 首先,我们需要连接数据库并执行查询语句以获取数据。然后,我们可以使用 QStandardItemModel 创建树形结构的数据模型,并将查询结果添加到模型中。最后,我们可以将 QTreeView 控件设置为使用该模型来显示数据。 以下是一个简单的示例代码,演示如何在 QTreeView 中显示数据库中的数据: ```python import sys from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.QtWidgets import * import sqlite3 class MainWindow(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): # 创建 QTreeView 控件 self.treeView = QTreeView(self) self.setCentralWidget(self.treeView) # 创建数据模型 self.model = QStandardItemModel() self.model.setHorizontalHeaderLabels(['Name', 'Age']) # 连接数据库并执行查询语句 conn = sqlite3.connect('mydatabase.db') cursor = conn.execute('SELECT * FROM mytable') rows = cursor.fetchall() # 将查询结果添加到数据模型中 for row in rows: parentItem = self.model.invisibleRootItem() for i in range(len(row)): item = QStandardItem(str(row[i])) parentItem.appendRow(item) parentItem = item conn.close() # 将数据模型设置为 QTreeView 的模型 self.treeView.setModel(self.model) self.treeView.expandAll() if __name__ == '__main__': app = QApplication(sys.argv) mainWindow = MainWindow() mainWindow.show() sys.exit(app.exec_()) ``` 在上面的示例代码中,我们首先创建了一个 QTreeView 控件,并将其设置为主窗口的中央部件。然后,我们创建了一个 QStandardItemModel 数据模型,并将其设置为 QTreeView 的模型。 接下来,我们连接到名为“mydatabase.db”的 SQLite 数据库,并执行查询语句以获取所有行。然后,我们将查询结果添加到数据模型中。 最后,我们将数据模型设置为 QTreeView 的模型,并展开所有项以显示完整的树形结构。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值