数据库存储树形数据,并提供操作界面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);//递归函数,把子项添加到父项,pid ,parent 分别是上级ID和项


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

    void initTree();
   // void initTreeB();
  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值