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

该博客介绍了如何将树形数据存储在数据库中,并使用Qt的QTreeView组件进行显示和操作。内容包括通过id和pid字段构建树结构,递归加载数据库数据到QTreeView,以及实现添加、删除和编辑功能。删除操作限制仅能删除无子节点的节点,以防止错误操作。博客附带了数据库结构示例和软件界面截图,同时提供了源代码下载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个简单的树形数据存储在数据库,然后用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);//递归函数,把子项添加到父项,pid ,parent 分别是上级ID和项


private:
    Ui::Widget *ui;
      QSqlDatabase db;
     // QStandardItemModel *stdModel;

    void initTree();
   // void initTreeB();
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值