This commit is contained in:
朱子楚\zhuzi
2024-04-03 11:19:35 +08:00
parent bf5bedc9ed
commit a95916ab03
3 changed files with 46 additions and 46 deletions

View File

@ -8,9 +8,9 @@
#include "stdafx.h"
/**
* @brief The FluNode class
* @brief The FluTreeNode class
*/
class FluNode : public QObject{
class FluTreeNode : public QObject{
Q_OBJECT
Q_PROPERTY(QString key READ key CONSTANT)
Q_PROPERTY(QString title READ title CONSTANT)
@ -18,14 +18,14 @@ class FluNode : public QObject{
Q_PROPERTY(bool isExpanded READ isExpanded CONSTANT)
Q_PROPERTY(bool checked READ checked CONSTANT)
public:
explicit FluNode(QObject *parent = nullptr);
explicit FluTreeNode(QObject *parent = nullptr);
Q_INVOKABLE QString key(){return _key;};
Q_INVOKABLE QString title(){return _title;};
Q_INVOKABLE int depth(){return _depth;};
Q_INVOKABLE bool isExpanded(){return _isExpanded;};
Q_INVOKABLE bool hasChildren(){ return !_children.isEmpty();};
Q_INVOKABLE bool hasNextNodeByIndex(int index){
FluNode* p = this;
FluTreeNode* p = this;
for(int i=0;i<(_depth - index -1);i++){
p = p->_parent;
}
@ -75,15 +75,15 @@ public:
int _depth=0;
bool _checked = false;
bool _isExpanded=true;
QList<FluNode*> _children;
FluNode* _parent = nullptr;
QList<FluTreeNode*> _children;
FluTreeNode* _parent = nullptr;
};
class FluTreeModel : public QAbstractItemModel
{
Q_OBJECT
Q_PROPERTY_AUTO(int,dataSourceSize)
Q_PROPERTY_AUTO(QList<FluNode*>,selectionModel)
Q_PROPERTY_AUTO(QList<FluTreeNode*>,selectionModel)
QML_NAMED_ELEMENT(FluTreeModel)
QML_ADDED_IN_MINOR_VERSION(1)
public:
@ -96,23 +96,23 @@ public:
QModelIndex index(int row, int column,const QModelIndex &parent = QModelIndex()) const override;
Q_INVOKABLE void removeRows(int row,int count);
Q_INVOKABLE void insertRows(int row,QList<FluNode*> data);
Q_INVOKABLE void insertRows(int row,QList<FluTreeNode*> data);
Q_INVOKABLE QObject* getRow(int row);
Q_INVOKABLE void setData(QList<FluNode*> data);
Q_INVOKABLE void setData(QList<FluTreeNode*> data);
Q_INVOKABLE void setDataSource(QList<QMap<QString,QVariant>> data);
Q_INVOKABLE void collapse(int row);
Q_INVOKABLE void expand(int row);
Q_INVOKABLE void dragAndDrop(int dragIndex,int dropIndex,bool isDropTopArea);
Q_INVOKABLE FluNode* getNode(int row);
Q_INVOKABLE FluTreeNode* getNode(int row);
Q_INVOKABLE void refreshNode(int row);
Q_INVOKABLE void checkRow(int row,bool checked);
Q_INVOKABLE bool hitHasChildrenExpanded(int row);
Q_INVOKABLE void allExpand();
Q_INVOKABLE void allCollapse();
private:
QList<FluNode*> _rows;
QList<FluNode*> _dataSource;
FluNode* _root = nullptr;
QList<FluTreeNode*> _rows;
QList<FluTreeNode*> _dataSource;
FluTreeNode* _root = nullptr;
};
#endif // FLUTREEMODEL_H