一个简单的树形数据存储在数据库,然后用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 initT

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

被折叠的 条评论
为什么被折叠?



