QListWidget右键菜单

2023-10-27

    关于QListWidget右菜单的的实现,网上多数资料都没有提到如何使用Qt Creator快速实现(如参考资料[1][2]),本文重点介绍此方法。

1 槽函数生成

    通过Qt Creator的UI设计器将QListWidget控件拖放到主界面中,然后右键单击QListWidget控件,在弹出的槽选择框中,选中customContextMenuRequested(Point)槽,然后确定:


                                                                           图1

    若想通过右键单击QListWidget触发与customContexMenuRequsted()绑定的信号,还得设置QListWidget的MenuPolicy属性。有2种方法可以达到此目的。

方法一:

    选中QListWidget控件,然后在右侧的属性栏中修改contextMenuPolicy属性为CustomContextMenu,如下图所示:


                                                                       图1.2

方法二:

    在构建函数中添加如下设置代码:

ui->seedsListWidget->setContextMenuPolicy( Qt::CustomContextMenu );

    说明:(1) seedsListWidget是我对QListWidget控件的名字,实际使用时,根据实际的名字进行修改。

                (2) 两种方法,使用其一即可。本文推荐使用方法一。

2 槽函数完善

    本文要达到的效果是,为QListWidget控件添加2个右键菜单“Delete”和“Clear”,分别用于删除选中的项和清空QListWidget。

2.1 custumContextMenu槽函数

void SegmentationSetting3D::on_seedsListWidget_customContextMenuRequested(const QPoint &pos)
{
    QListWidgetItem* curItem = ui->seedsListWidget->itemAt( pos );
    if( curItem == NULL )
        return;

    QMenu *popMenu = new QMenu( this );
    QAction *deleteSeed = new QAction(tr("Delete"), this);
    QAction *clearSeeds = new QAction(tr("Clear"), this);
    popMenu->addAction( deleteSeed );
    popMenu->addAction( clearSeeds );
    connect( deleteSeed, SIGNAL(triggered() ), this, SLOT( deleteSeedSlot()) );
    connect( clearSeeds, SIGNAL(triggered() ), this, SLOT( clearSeedsSlot()) );
    popMenu->exec( QCursor::pos() );
    delete popMenu;
    delete deleteSeed;
    delete clearSeeds;
}

2.2 deleteSeedSlot()

void SegmentationSetting3D::deleteSeedSlot()
{
    int ch = QMessageBox::warning(NULL, "Warning",
                                  "Are you sure to delete seed ?",
                                  QMessageBox::Yes | QMessageBox::No,
                                  QMessageBox::No);

    if ( ch != QMessageBox::Yes )
        return;

    QListWidgetItem * item = ui->seedsListWidget->currentItem();
    if( item == NULL )
        return;

    int curIndex = ui->seedsListWidget->row(item);
    ui->seedsListWidget->takeItem(curIndex);
	delete item;
}

2.3 clearSeedsSlot()

void SegmentationSetting3D::clearSeedsSlot()
{
    int ch = QMessageBox::warning(NULL, "Warning",
                                  "Are you sure to clear seeds ?",
                                  QMessageBox::Yes | QMessageBox::No,
                                  QMessageBox::No);

    if ( ch != QMessageBox::Yes )
        return;

    QListWidgetItem * item = ui->seedsListWidget->currentItem();
    if( item == NULL )
        return;

    ui->seedsListWidget->clear();
}

参考资料

[1]QListWidget中右键单击Item出现菜单

[2]QListWidget的item上实现右键菜单

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QListWidget右键菜单 的相关文章

  • 如何使用 Qt DOM 通过此语法获取 xml 属性

    我正在使用 Qt DOM XML 解析器 并且遇到了如下属性定义的问题
  • 第一次信号发射后自动断开

    我正在从文件加载网页 然后替换其中的一些 html self template web page QtWebKit QWebPage self template web page mainFrame load QtCore QUrl tem
  • 清除pyqt中布局中的所有小部件

    有没有办法清除 删除 布局中的所有小部件 self plot layout QtGui QGridLayout self plot layout setGeometry QtCore QRect 200 200 200 200 self r
  • QMainWindow 上的 Qt 布局

    我设计了一个QMainWindow with QtCreator s设计师 它由默认的中央小部件 aQWidget 其中包含一个QVBoxLayout以及其中的所有其他小部件 现在我想要的一切就是QVBoxLayout自动占据整个中央小部件
  • C++ SQL 查询构建库

    我正在寻找一个提供与 c SelectQueryBuilder 库类似功能的 c 库 http www codeproject com Articles 13419 SelectQueryBuilder Building complex a
  • 如何去除QWizard中的水平线?

    我正在研究一个样式表QWizard我想删除按钮上方的水平线 我尝试递归浏览所有小部件并将其边框设置为无 但似乎没有任何小部件具有此边框 这是我的代码 可以找到完整的可构建示例here https gist github com ardeid
  • QTableView 并双击一个单元格

    我正在开发测试用例编辑器 该编辑器包含 USART 传输和接收数据包格式 编辑器是一个表格视图 发送和接收数据包的长度为八个字节 例如 0x01 0x02 0x03 0x08 它在我的第五和第六栏中 现在 我希望此列中的单元格为只读 但是当
  • Mac OS X 上的 Qt 字体系列和样式

    我有一个基于 Qt PyQt 的 GUI 应用程序 在 Mac OS X 和其他平台 上运行 它允许用户选择字体并具有粗体和斜体选项的复选框 在更新到新的基于 Cocoa 的 Qt 时 用户发现QFontComboBox不再显示不同的字体样
  • PyQt4 QPalette 不工作

    btn QtGui QPushButton Button self palettes btn palette palettes setColor btn backgroundRole QtCore Qt green btn setPalet
  • Qt中Q_PROPERTY的意义是什么?

    我无法理解 Q PROPERTY 的用法 Q PROPERTY 如何帮助程序具有防御性 它是干什么用的 我看过这个论坛 但确实无法应用 我已经理解了这个例子 但不明白它的用法 这是一个例子 我能从中得到什么 我知道阅读将赋予只读特权 wri
  • 针对初学者的 QT 商业许可证与非商业许可证 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 QT 许可似乎非常反学习 因为据我所知 用它开发的任何东西都只能是商业的当且仅当 its entire开发是在使用商业许可证的情况下完成的
  • Qt 5.1.1 与 Visual Studio 2012 - 这些 QT 版本无法访问

    打开 Visual Studio 时出现此错误 我安装自http qt project org downloads http qt project org downloads 适用于 Windows 64 位的 Qt 5 1 1 VS 20
  • 如何在Android中使用QML - QWebView

    我想在 Android 中部署一个 YouTube 应用程序 但它只能在我的电脑上运行 在安卓上不起作用 它不加载任何视频 问题仅出在 QWebView 上 我使用了与此类似的代码 http doc qt io archives qt 5
  • Q风格所有权

    在 Qt 应用程序中使用样式时 我遇到了一个有趣的问题QStyle所有权 QStyle继承自QObject 通常接受QObject parent作为构造函数参数来管理其子级的生命周期 但QStyle的构造函数没有此构造函数参数 第一个问题
  • 在 Qt GraphicsView 中创建长线(或十字线)光标的最佳方法

    创建长十字线光标 与视口一样长 的简单方法是创建一条十字线graphicsItem 当鼠标移动时 设置该项目的pos财产 但是当场景复杂时这种方式会很慢 因为它要更新整个视口来更新光标的pos 另一种简单的方法是setCursor QCur
  • Qt:将数字转换为 QString、QVariant 或 QString::number 哪个更好

    我只是好奇 比方说 我需要在控制台中输出一个数字 代码是 include
  • 使用 C++ 访问 Azure blob 存储 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • QML MouseArea 将事件传播到按钮

    我正在开发一个应用程序 其菜单类似于 Android 版 Gmail 收件箱应用程序菜单 基本上 当您按下按钮打开菜单时 它就会滑入视图 用户可以将其滑开或按菜单上的按钮 对于滑动我使用了代码SwipeArea from kovrov ht
  • 相对文件路径的区别:Qt Creator的调试模式和发布模式

    QFile file test txt if file open QIODevice ReadOnly qDebug lt lt You got me 我在用 Qt 4 8 6 与 MSVC 2010 Qt 创建者 3 1 1 Window
  • 一个具有完全透明背景的qt小部件

    我需要创建一个 qt 小部件 它将充当其他一些小部件的父级 并对它们进行排序 现在的问题是如何使其背景完全透明 我想这样做 struct Imp Imp QWidget parent thisWidget new QWidget paren

随机推荐

  • QT信号和槽参数传递

    写了一个这样的信号 void caculateReady QList
  • 异常检测专栏(三)传统的异常检测算法——上

    前言 在上一篇推文中 我们简要介绍了异常检测常用的几种数据集如ImageNet CIFAR10 CIFAR100 MNIST等 接下来 我们将基于传统的异常检测算法分为上 下两部分 逐一介绍不同类别的方法 本教程禁止转载 同时 本教程来自知
  • 基于 Postman 接口自动化场景设计

    一个强大的工具 基于 Postman 接口自动化场景设计 使用Xmind或者Yaml 设计 postman 自动化场景 引言 postman是一个比较轻量级的接口测试工具 在单个接口的测试表现优秀 在批量测试接口方面则提供了Runner C
  • ajax数据类型json,Ajax请求不与数据类型“jsonp”或“JSON”

    我想使用JSON作为Ajax请求 使用jQuery 的返回类型 但我的代码总是导致错误 我试过改变json和jsonp之间的MIME类型 但无济于事 Ajax请求不与数据类型 jsonp 或 JSON 我也不确定是否正确格式化数据 部分 我
  • 如何让HTTPS站点评级达到A+? 还得看这篇HTTPS安全优化配置最佳实践指南

    文章目录 0x00 前言简述 SSL TLS 简单说明 SSL TLS 相关术语一览 0x01 HTTPS安全实践指南 1 证书 certificate 与私钥 Private key 2 中间件SSL TLS服务器配置 3 SSL TLS
  • [news] Lion: The Complete Macworld Review

    the complete version is from http www macworld com article 161026 2011 07 osx lion review html In a decade Mac OS X evol
  • js常用数组操作方法

    1 concat 用于连接两个或多个数组 该方法不会改变现有的数组 仅会返回被连接数组的一个副本 2 join 用于把数组中的所有元素放入一个字符串 元素是通过指定的分隔符进行分隔的 默认使用 号分割 不改变原数组 3 push 可向数组的
  • 【QT开发笔记-基础篇】

    本节对应的视频讲解 B 站 链 接 QT开发笔记 基础篇 第二章 常用控件 2 12 表格控件 QTableWidget 1 QTableWidget 是 Qt 中的表格控件 可以行列的形式来展示数据 1 属性和方法 QTableWidge
  • 白话操作系统1.1 - CPU - virtualization - 虚拟

    1 桃子之影分身 three easy pieces操作系统一书中 教授谈起了分桃子的事情 说实际只有一个桃子 但却要分给很多猴子 那么问题来了 如何让每个猴子都能开开心心的分到桃呢 其实就是用一些手段啊 捏造出虚拟的桃子 虚拟的东西嘛 可
  • ECharts的讲解

    目录 什么是数据可视化 ECharts的介绍 ECharts的特点 ECharts的基本使用 操作步骤 通用配置title的相关配置 通用配置tooltip的相关配置 触发类型 trigger 触发时机 triggerOn 格式化 form
  • python 概率分布_Python中的联合概率分布

    要通过numpy中的m矩阵生成 可以将两个适当形状的数组相乘 如果数组x是1的n 而数组y是 则它们的乘积x y将是n 由m 在 下面是一个例子 说明如何用最初是一维的数据来处理这个问题 我使用随机值 如果是概率分布的话 应该对其进行规范化
  • 用Hexo制作自己的静态博客

    博客是一个老东西了 如果我们想写博客的话 有两种选择 第一种是在博客网站上 例如QQ空间 新浪博客 简书等网站上申请账号 然后编写博客 第二种就是自己找服务器搭一个博客 搭建博客也有两种选择 第一种是搭建动态博客 这方面最流行的就是Word
  • C++之五种排序方法总结

    模板函数sort sort是一个模板函数 sort 括号里可以接受两个或三个参数 这里先说一下两个参数的 因为三个参数的还没研究好 哈哈 使用sort 时需要添加头文件
  • 修改mysql的字符集和默认存储引擎

    author skate time 2012 05 18 修改mysql的字符集和默认存储引擎 1 修改mysql的字符集 mysql库现有字符集 mysql gt show variables like character Variabl
  • 多表的 inner join与left join;

    当前情况 目前有三个表 关系如下 1 sc表 有 student id class id 2 student表 有student id student name 3 class表 有class id class name class add
  • vue3+vite+ts项目配置开发环境和生产环境 打包命令配置

    开发环境和生产环境的配置和打包方式有所不同 下面是基于vue3 vite ts项目的开发环境和生产环境配置及打包方式的详细说明 开发环境配置 开发环境的配置主要是为了方便开发者进行调试和测试 以下是开发环境的配置步骤 1 1 安装依赖 首先
  • 51单片机“独立按键”控制静态数码管———显示数字0-9

    51单片机 独立按键 控制静态数码管学习总结 一 按键功能实现总结 独立按键 电路图解析及接线 二 程序编译与控制静态数码管显示1 2 0 9 的效果展示 三 按键程序逻辑设计与程序编译 四 程序烧录与保存 一 按键功能实现总结 独立按键
  • python 绘制两组数据的分布图

    可以使用 Python 中的 Matplotlib 库来绘制两组数据的分布图 下面是一个简单的示例代码 import matplotlib pyplot as plt 假设有两组数据 分别是 x 和 y x 1 2 3 4 5 y 2 4
  • JAVA用线程池模拟查询大批量数据

    JAVA用线程池模拟查询大批量数据 文章目录 JAVA用线程池模拟查询大批量数据 1 前言背景 1 1 线程 1 2 进程与线程的区别总结 1 3 使用多线程的好处 2 多线程的实现 2 1 操作流程 3 测试 1 前言背景 1 1 线程
  • QListWidget右键菜单

    关于QListWidget右菜单的的实现 网上多数资料都没有提到如何使用Qt Creator快速实现 如参考资料 1 2 本文重点介绍此方法 1 槽函数生成 通过Qt Creator的UI设计器将QListWidget控件拖放到主界面中 然