QT对于列表和表格结构都有相应的model实现, 唯独对QTreeView没有提供任何默认实现,只能子类化QAbstractItemModel. 由于树形结构比较复杂,层次结构不固定,用MVC框架实现的确比较费劲. 还好QT提供的这个例子能够处理很多通用问题. 可直接拿过来用, 由于示例代码看起来比较费劲,特笔记记录:
QT示例参见$(QTDIR)\examples\itemviews\simpletreemodel:
一. 树形结构体定义 treeitem.h
/**
* @brief 通用树形结构类
*/
class TreeItem
{
public:
TreeItem(const QList<QVariant> &data,TreeItem *parent=0 );
~TreeItem();
void appendChild(TreeItem *child);
TreeItem *child(int row);
int childCount() const;
int columnCount() const;
QVariant data(int column) const;
int row() const;
TreeItem *parent();
private:
TreeItem *parentItem; // 父结点
QList<TreeItem*&