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