Qt简单 TreeView实现

这篇文章讲述如何实现如下的一个treeView.

image

首先设置treeView的外框, 大小, model等

QStandardItemModel *goodsModel = new QStandardItemModel(0, 4,this);
 
 ui.treeView_->setColumnWidth(0,50); 
 ui.treeView_->setColumnWidth(1,200); 
     ui.treeView_->setColumnWidth(2,200); 
     ui.treeView_->setColumnWidth(3,200); 
     goodsModel->setHeaderData(0, Qt::Horizontal, tr("No")); 
     goodsModel->setHeaderData(1, Qt::Horizontal, tr("name")); 
     goodsModel->setHeaderData(2, Qt::Horizontal, tr("value1")); 
     goodsModel->setHeaderData(3, Qt::Horizontal, tr("value2"));
 
     ui.treeView_->setModel(goodsModel);


然后把数据填充到item中


for (int i = 0; i < 4; ++i) 
     {
 
         QList<QStandardItem *> items; 
         for (int i = 0; i < 3; ++i) 
         { 
             QStandardItem *item = new QStandardItem(QString("item %0").arg(i));
 
             if (0 == i) 
                 item->setCheckable(true); 
             items.push_back(item); 
         } 
         goodsModel->appendRow(items);
 
         for (int i = 0; i < 4; ++i) 
         { 
             QList<QStandardItem *> childItems; 
             for (int i = 0; i < 3; ++i) 
          { 
              QStandardItem *item = new QStandardItem(QString("%0").arg(i));            
              if (0 == i) 
                  item->setCheckable(true);
 
              childItems.push_back(item); 
          } 
             items.at(0)->appendRow(childItems);    
         }
 
     }


第三步设置treeview 能够被多选

ui.treeView_->setSelectionMode(QAbstractItemView::ExtendedSelection);


第三步设置右键选择菜单

void TreeView::contextMenuEvent(QContextMenuEvent *event) 
 { 
     QMenu *pMenu = new QMenu(ui.treeView_); 
     QAction* buildItem = pMenu->addAction(tr("build")); 
     pMenu->exec(QCursor::pos()); 
 }

转自 http://www.cnblogs.com/sld666666/archive/2011/02/15/1955179.html

要在Qt实现TreeView,你可以按照以下步骤进行操作: 1. 创建一个Qt项目并打开Qt Creator。 2. 在Qt Creator的项目文件列表,打开主窗口的.ui文件。 3. 在设计模式下,从Qt Designer的控件列表拖放一个QTreeView控件到主窗口上。 4. 在代码编辑器,打开主窗口的.h头文件。 5. 在类的私有部分或公有部分添加一个QTreeView成员变量。例如: ```cpp private: QTreeView *treeView; ``` 6. 在类的构造函数或初始化函数,创建QStandardItemModel模型,并将其设置为QTreeView的模型。例如: ```cpp // 创建QStandardItemModel模型 QStandardItemModel *model = new QStandardItemModel(this); // 设置模型到QTreeView treeView->setModel(model); ``` 7. 使用QStandardItem类创建树的项,并添加到模型。例如: ```cpp // 创建根节点 QStandardItem *rootItem = new QStandardItem("Root"); model->appendRow(rootItem); // 创建子节点 QStandardItem *childItem = new QStandardItem("Child"); rootItem->appendRow(childItem); ``` 8. 可以根据需要设置项的其他属性,例如图标、文本颜色等。 9. 可以使用QTreeView的其他方法来设置树的显示样式、列数、选择模式等。例如: ```cpp // 设置树的显示样式为树状结构 treeView->setRootIsDecorated(true); // 设置只显示一个列 treeView->setUniformRowHeights(true); treeView->setColumnCount(1); // 设置选择模式为单选 treeView->setSelectionMode(QAbstractItemView::SingleSelection); ``` 10. 运行程序,你应该能够看到一个基本的TreeView显示在主窗口,并且你可以通过添加、删除、修改模型的项来动态改变树的内容。 这只是一个简单的示例,你可以进一步探索Qt的文档和示例来了解更多关于TreeView的功能和用法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值