Qt : 在QTreeWidget中添加自定义右键菜单

一、引言

如图,我们需要在一个QTreeWidget 控件中添加了自定义右键菜单。
在这里插入图片描述

二、思路

如何做到的呢,很简单。浅浅记录和分享一下。

继承QTreeWidget,定义一个子类CustomTreeWidget ,在重写contextMenuEvent 事件即可。

三、代码

#include <QTreeWidget>
#include <QAction>
#include <QMenu>
#include <QContextMenuEvent>

class CustomTreeWidget : public QTreeWidget
{
    Q_OBJECT
public:
    CustomTreeWidget(QWidget* parent = nullptr);
protected:
    void contextMenuEvent(QContextMenuEvent* event) override;
signals:
};
#include "CustomTreeWidget.h"
#include <QComboBox>
#include <QDoubleSpinBox>
#include "NoWheelUiControls.h"

CustomTreeWidget::CustomTreeWidget(QWidget *parent) : QTreeWidget(parent)
{
}

void CustomTreeWidget::contextMenuEvent(QContextMenuEvent *event)
{
    QMenu menu(this);
    QAction* addGroupAction = menu.addAction(QStringLiteral("添加组"));
    QAction* deleteGroupAction = menu.addAction(QStringLiteral("删除当前组"));
    QAction* addChildAction = menu.addAction(QStringLiteral("添加子项"));
    QAction* deleteOneAction = menu.addAction(QStringLiteral("删除当前项"));

    QList<QTreeWidgetItem*> items = selectedItems();
    if(items.isEmpty()) return;

    QAction* selectedItem = menu.exec(event->globalPos());

    if (selectedItem == addGroupAction) { // 新建组
        // add codes here
    } else if (selectedItem == deleteGroupAction) {// 删除组
    	// add codes here
    }else if(selectedItem == addChildAction) { // 添加项
		// add codes here
    }else if(selectedItem == deleteOneAction) { // 删除项
     	// add codes here
    }
    update();
}

四、演示效果

在这里插入图片描述

相关推荐

  1. Windows 菜单添加 Git Bash

    2024-04-26 18:58:06       39 阅读
  2. notepad++绿色版添加菜单

    2024-04-26 18:58:06       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-26 18:58:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-26 18:58:06       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-26 18:58:06       82 阅读
  4. Python语言-面向对象

    2024-04-26 18:58:06       91 阅读

热门阅读

  1. npm install CERT_HAS_EXPIRED解决方法

    2024-04-26 18:58:06       38 阅读
  2. BootLooder引导传参和镜像编译

    2024-04-26 18:58:06       29 阅读
  3. Git忽略文件

    2024-04-26 18:58:06       38 阅读
  4. ES6 新增功能复盘梳理

    2024-04-26 18:58:06       30 阅读
  5. python 学习笔记24 图片视频修复

    2024-04-26 18:58:06       31 阅读
  6. 掩码讲解,以及生成

    2024-04-26 18:58:06       35 阅读
  7. Nginx下php连接到GBase 8s数据库 - ODBC方式

    2024-04-26 18:58:06       165 阅读