一、qt中的treeView实现右键菜单栏的功能,主要使用的槽函数是:
void on_treeView_customContextMenuRequested(const QPoint &pos) 界面就是拖个treeView控件在上面就行,构造函数的实现如下: ui->setupUi(this); model = new QStandardItemModel(ui->treeView);//创建模型 ui->treeView->setModel(model);//导入模型 ui->treeView->setContextMenuPolicy(Qt::CustomContextMenu); ui->treeView->header()->setSectionResizeMode(QHeaderView::Stretch); model->setHorizontalHeaderLabels(QStringList()<<QStringLiteral("Item") <<QStringLiteral("info")<<QStringLiteral("value"));//设置头部标签 item = new QStandardItem(tr("one"));//创建一个条目对象 model->appendRow(item);//通过模型对象添加这个条目 model->setItem(1,0,new QStandardItem(tr("two"))); model->setItem(2,0,new QStandardItem(tr("three"))); //开始给第0行的子节点进行添加 QStandardItem * itemFolder; itemFolder = new QStandardItem(tr("one_info")); item->appendRow(itemFolder); item->setChild(0,1,new QStandardItem(QStringLiteral("one_message"))); for(int i=0;i<5;++i){ QStandardItem* itemgroup = new QStandardItem(QStringLiteral("%1").arg(i+1)); itemFolder->appendRow(itemgroup); itemFolder->setChild(itemFolder->index().row(),1,new QStandardItem(QStringLiteral("122222"))); } //给第一行添加子节点 model->item(1)->appendRow(new QStandardItem(tr("two info")));最后实现的界面效果如下:
实现右键菜单栏功能的效果如下:
二、实现双击不同节点,可以出现不同的结果,调用的槽函数是:
void on_treeView_doubleClicked(const QModelIndex &index);最后实现的效果是:点击不同的节点打印出来不同的东西,如下:
有兴趣可以参考源码链接,如下:
https://download.csdn.net/download/Littlehero_121/12993841