树形控件中的子项点击显示按钮弹窗

效果

在这里插入图片描述

MainWindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include"QStandardItemModel"
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
private slots:
    // QTreeView鼠标左键选中子节点事件响应槽函数
    void _on_m_treeView_current_changed(const QModelIndex& current, const QModelIndex& previous);
    void _on_m_treeView_MenuPopup(const QPoint &pos);

};
#endif // MAINWINDOW_H

MainWindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // 1.初始化model
    QStandardItemModel* m_standardItemModel = new QStandardItemModel();

    // 2.使用model设置QTreeView表头
    m_standardItemModel->setHorizontalHeaderLabels(QStringList(QStringLiteral("资源")));

    // 3.创建根节点,抽象Item,并没有实际数据
    QStandardItem* itemRoot = m_standardItemModel->invisibleRootItem();

    // 4.创建并添加Item的第一个子节点
    QStandardItem* itemCam = new QStandardItem(QStringLiteral("相机"));
    itemRoot->appendRow(itemCam);

    // 5.向第一个子节点itemCam添加子节点数据
    QList<QStandardItem*> camList;
    camList.append(new QStandardItem("cam1"));
    camList.append(new QStandardItem("cam2"));
    camList.append(new QStandardItem("cam3"));
    itemCam->appendRows(camList);

    // 6.创建并添加Item的第二个子节点
    QStandardItem* itemImg = new QStandardItem(QStringLiteral("图片"));
    itemRoot->appendRow(itemImg);

    // 7.向第二个子节点itemImg添加子节点数据
    QList<QStandardItem*> imgList;
    imgList.append(new QStandardItem("img1"));
    imgList.append(new QStandardItem("img2"));
    imgList.append(new QStandardItem("img3"));
    itemImg->appendRows(imgList);

    // 8.TreeView控件载入model
    ui->m_treeView->setModel(m_standardItemModel);

    // 9.展开数据
    ui->m_treeView->expandAll();

    // 槽函数
    connect(ui->m_treeView->selectionModel(), &QItemSelectionModel::currentChanged, this, &MainWindow::_on_m_treeView_current_changed);
    connect(ui->m_treeView, &QTreeView::customContextMenuRequested, this, &MainWindow::_on_m_treeView_MenuPopup);

    // 其他操作

    // 节点设置checkBox
    itemCam->setCheckable(true);
    itemImg->setCheckable(true);

    // 节点设置图标
    itemCam->setIcon(QIcon("C:/Users/admin/Desktop/Alexnet_Structure.png"));// 只能添加png, jpg等格式文件,无法添加.ico图标文件

    // 节点不可编辑
    ui->m_treeView->setEditTriggers(QAbstractItemView::NoEditTriggers);

    // 右键菜单
    ui->m_treeView->setContextMenuPolicy(Qt::CustomContextMenu);

}
void MainWindow::_on_m_treeView_current_changed(const QModelIndex& current, const QModelIndex& previous)
{
    // 你的操作 ...
    QModelIndex index = current.sibling(current.row(), 0); //子节点只有一行的情况下
}

void MainWindow::_on_m_treeView_MenuPopup(const QPoint& pos)
{
    QMenu* menu = new QMenu(ui->m_treeView);
    menu->addAction(QStringLiteral("添加"));
    menu->addAction(QStringLiteral("删除"));
    menu->exec(ui->m_treeView->mapToGlobal(pos));
}

//void MainWindow::_on_m_treeView_MenuPopup(const QPoint& pos)
//{
//    QMenu* menu = new QMenu(ui->m_treeView);
//    menu->addAction(QStringLiteral("添加"));
//    menu->addAction(QStringLiteral("删除"));
//    menu->exec(ui->m_treeView->mapToGlobal(pos));
//}

MainWindow::~MainWindow()
{
    delete ui;
}


  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
### 回答1: LabVIEW树形控件是一种用于显示层次结构数据的常用控件。下面是一个用于创建LabVIEW树形控件的简单方法。 首先,在LabVIEW的Front Panel上创建一个Tree控件。将其大小设置为适合显示你的数据的大小。 接下来,打开Tree控件的属性编辑器。将其选择模式设置为“单一选取”或“多选”。 然后,使用右键单击Tree控件,选择“通过树的形状创建项”来添加树的根节点子节点。你可以重复这个步骤来添加更多的节点。 对于每个节点,你可以通过右键单击节点并选择“添加子项”来添加更多的子节点。 然后,你可以使用右键单击节点并选择“复制项”来复制节点。然后,使用右键单击父节点并选择“粘贴项”来在父节点下粘贴复制的节点,从而创建节点的多个实例。 你还可以使用属性编辑器来为每个节点设置文本、图标和其他属性。 最后,你可以将Tree控件与其他LabVIEW元素(如按钮或图表)进行连接,以实现更复杂的功能。 总之,通过这些步骤,你可以在LabVIEW创建一个树形控件,用于显示层次结构数据。你可以根据需要添加、复制和编辑节点,以提供更丰富的用户界面。 ### 回答2: 在LabVIEW,可以使用"树形控件"来展示数据的层次结构,并且让用户能够方便地浏览和选择数据。 首先,在前面板上,选择"控件"选项卡的"树和图形"选项,从选择"树形控件"并将其拖拽到所需的位置。 然后,右键单击树形控件并选择"自定义树"来进入树形控件的编辑模式。 接下来,在该编辑模式,可以通过右键单击节点来添加、删除或修改节点。可以选择节点的文本、图标、前景色和背景色等属性,以及节点被单击时需要执行的操作。 在树形控件的属性面板,可以设置树形控件的样式、颜色、大小等外观和行为属性。可以选择是否允许节点的展开和折叠,以及是否显示节点的图标等。 另外,还可以通过编程方式来操作树形控件。使用LabVIEW树形控件相关的函数,可以实现对树形控件的自动更新、节点的展开和折叠、节点的选择和取消选择等操作。 最后,在运行程序时,用户可以通过点击节点来展开或折叠子节点,选择特定节点,或者执行与节点相关的操作。 通过以上步骤,我们可以在LabVIEW创建一个树形控件,以展示数据的层次结构,并且在运行时让用户可以方便地浏览和选择数据。 ### 回答3: LabVIEW树形控件是一种用于展示层级数据结构的图形控件,用户可以通过展开和折叠节点来查看子节点或者隐藏子节点。下面是如何在LabVIEW实现一个树形控件的简单步骤: 1. 首先,创建一个新的VI,并在用户界面放置一个Tree控件。可以从控件面板选择"树"来快速找到这个控件。 2. 在LabVIEW的图形编程环境,可以右键单击Tree控件,选择"属性"来配置树形控件的外观和行为。可以自定义节点的图标、字体、颜色等属性。 3. 在LabVIEW树形控件的数据一般通过多维数组来表示。可以使用数组操作函数来读取或者修改树形结构。每个元素代表一个节点,可以包含子节点。数组的每个元素都有一个层级关系属性,用于指示其在树形结构的位置。 4. 通过编程的方式,可以向树形控件添加节点。使用树形控件的方法和属性,例如"添加节点"、"删除节点"、"展开节点"、"折叠节点"等等。还可以为每个节点添加选事件来实现响应用户操作的功能。 5. 在用户界面,可以设置各种用户交互控件来对节点进行编辑,如文本框或复选框等。可以为每个节点设置相应的编辑事件方法,以便在用户对节点进行编辑时更新树形结构。 总结起来,通过正确配置Tree控件的属性和使用相应的编程方法, LabVIEW树形控件可以实现展示和操作层级数据结构的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RBJFV

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值