平面设计软件有哪些好用/长沙网络优化产品

平面设计软件有哪些好用,长沙网络优化产品,网站没有建设好可以备案吗,网站管理的内容在 Qt 中,QWidget 类提供了几种不同的上下文菜单策略,这些策略通过 Qt::ContextMenuPolicy 枚举类型来定义,用于控制控件(如按钮、文本框等)在用户右键点击时如何显示上下文菜单。 以下是 Qt::ContextMenuPolicy 枚举中…

        在 Qt 中,QWidget 类提供了几种不同的上下文菜单策略,这些策略通过 Qt::ContextMenuPolicy 枚举类型来定义,用于控制控件(如按钮、文本框等)在用户右键点击时如何显示上下文菜单。

        以下是 Qt::ContextMenuPolicy 枚举中定义的所有上下文菜单策略:

1. Qt::DefaultContextMenu

  • 含义:使用默认的上下文菜单处理方式。对于大多数控件,这通常意味着当用户右键点击时,会根据操作系统和控件的默认行为显示一个上下文菜单。
  • 示例代码
import sysfrom PySide6.QtCore import Qt
from PySide6.QtWidgets import QApplication, QWidget, QLineEditapp = QApplication(sys.argv)
window = QWidget()line_edit = QLineEdit("DefaultContextMenu", window)
line_edit.setContextMenuPolicy(Qt.DefaultContextMenu)window.show()
sys.exit(app.exec())

• 当单击鼠标右键,弹出默认的菜单。

2. Qt::NoContextMenu

  • 含义:控件不会显示上下文菜单。当用户在该控件上右键点击时,不会触发任何与上下文菜单相关的操作。注意:该策略只是简单地让控件自身不显示上下文菜单,但当用户在这个控件上触发上下文菜单事件(通常是右键点击)时,这个事件会继续向其父控件传播。如果父控件有相应的上下文菜单处理逻辑,那么父控件的上下文菜单可能会显示出来。
  • 示例代码
import sysfrom PySide6.QtCore import Qt
from PySide6.QtWidgets import QApplication, QWidget, QLineEditapp = QApplication(sys.argv)
window = QWidget()line_edit = QLineEdit("No Context Menu", window)
line_edit.setContextMenuPolicy(Qt.NoContextMenu)window.show()
sys.exit(app.exec())

3. Qt::PreventContextMenu

  • 含义:阻止上下文菜单的显示,并且不会向父控件传播上下文菜单事件。这意味着即使父控件有上下文菜单处理逻辑,也不会被触发。
  • 示例代码
import sysfrom PySide6.QtCore import Qt
from PySide6.QtGui import QAction
from PySide6.QtWidgets import QApplication, QWidget, QLineEdit, QMenuapp = QApplication(sys.argv)class MyWindow(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setWindowTitle("上下文菜单")self.resize(300, 200)# 重写上下文菜单事件def contextMenuEvent(self, event):# 创建一个菜单menu = QMenu(self)# 创建菜单项action1 = QAction("菜单项1", self)action2 = QAction("菜单项2", self)# 将菜单项添加到菜单中menu.addAction(action1)menu.addAction(action2)# 在鼠标点击的位置显示菜单menu.exec(event.globalPos())window = MyWindow()
line_edit = QLineEdit("PreventContextMenu", window)
line_edit.setContextMenuPolicy(Qt.PreventContextMenu)window.show()
sys.exit(app.exec())

        这个范例中,由于line_edit设置了PreventContextMenu策略,虽然它的父容器定义了菜单,但是阻止了向父控件传播上下文菜单事件,所以点击它没有任何菜单显示。

如果将上述代码修改为DefaultContextMenu策略:

import sysfrom PySide6.QtCore import Qt
from PySide6.QtGui import QAction
from PySide6.QtWidgets import QApplication, QWidget, QLineEdit, QMenuapp = QApplication(sys.argv)class MyWindow(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setWindowTitle("上下文菜单")self.resize(300, 200)# 重写上下文菜单事件def contextMenuEvent(self, event):# 创建一个菜单menu = QMenu(self)# 创建菜单项action1 = QAction("菜单项1", self)action2 = QAction("菜单项2", self)# 将菜单项添加到菜单中menu.addAction(action1)menu.addAction(action2)# 在鼠标点击的位置显示菜单menu.exec(event.globalPos())window = MyWindow()
line_edit = QLineEdit("PreventContextMenu", window)
line_edit.setContextMenuPolicy(Qt.DefaultContextMenu)window.show()
sys.exit(app.exec())

它就会显示自己的默认菜单。

 或者设置为NoContextMenu策略:

import sysfrom PySide6.QtCore import Qt
from PySide6.QtGui import QAction
from PySide6.QtWidgets import QApplication, QWidget, QLineEdit, QMenuapp = QApplication(sys.argv)class MyWindow(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setWindowTitle("上下文菜单")self.resize(300, 200)# 重写上下文菜单事件def contextMenuEvent(self, event):# 创建一个菜单menu = QMenu(self)# 创建菜单项action1 = QAction("菜单项1", self)action2 = QAction("菜单项2", self)# 将菜单项添加到菜单中menu.addAction(action1)menu.addAction(action2)# 在鼠标点击的位置显示菜单menu.exec(event.globalPos())window = MyWindow()
line_edit = QLineEdit("PreventContextMenu", window)
line_edit.setContextMenuPolicy(Qt.NoContextMenu)window.show()
sys.exit(app.exec())

 点击后自己的菜单不显示,但是将点击事件传递给了父容器,所以会显示父容器的菜单:

4. Qt::ActionsContextMenu

  • 含义:控件的上下文菜单由其 actions() 方法返回的动作列表组成。可以通过向控件添加动作(QAction)来定义上下文菜单的选项。
  • 示例代码
import sysfrom PySide6.QtCore import Qt
from PySide6.QtGui import QAction
from PySide6.QtWidgets import QApplication, QWidget, QPushButton, QLineEditapp = QApplication(sys.argv)
window = QWidget()class MyLineEdit(QLineEdit):def __init__(self, parent=None):super().__init__(parent)self.setupUi(self)def setupUi(self, parent):self.setText("PreventContextMenu")self.setContextMenuPolicy(Qt.ActionsContextMenu)     # 设置上下文菜单策略action = QAction("Action 1", self)self.addAction(action)   # 创建的时候已经有了Action 1菜单项line_edit = MyLineEdit(window)action = QAction("Action 2", line_edit)
line_edit.addAction(action)   # 再添加一个Action 2菜单项window.show()
sys.exit(app.exec())

进一步的,我们可以读取控件的系统内置默认菜单,并且再后面加上自定义的菜单项:

import sysfrom PySide6.QtCore import Qt
from PySide6.QtGui import QAction
from PySide6.QtWidgets import QApplication, QWidget, QPushButton, QLineEditapp = QApplication(sys.argv)
window = QWidget()class MyLineEdit(QLineEdit):def __init__(self, parent=None):super().__init__(parent)self.setupUi(self)def setupUi(self, parent):self.setText("ActionsContextMenu")self.setContextMenuPolicy(Qt.ActionsContextMenu)     # 设置上下文菜单策略default_actions = self.createStandardContextMenu().actions()   # 获取系统默认的上下文菜单self.addActions(default_actions)   # 添加系统默认的上下文菜单action = QAction("Action 1", self)   # 创建一个Action 1菜单项self.addAction(action)   # 添加Action 1菜单项line_edit = MyLineEdit(window)action = QAction("Action 2", line_edit)
line_edit.addAction(action)   # 再添加一个Action 2菜单项window.show()
sys.exit(app.exec())

5. Qt::CustomContextMenu

  • 含义:自定义上下文菜单。
            当用户在控件上右键点击时,会发出 customContextMenuRequested 信号,开发者可以连接这个信号到自定义的槽函数,在槽函数中创建并显示自定义的上下文菜单。
  • 示例代码
import sysfrom PySide6.QtCore import Qt
from PySide6.QtWidgets import QApplication, QWidget, QMenu, QLineEditapp = QApplication(sys.argv)
window = QWidget()line_edit = QLineEdit("PreventContextMenu", window)
line_edit.setContextMenuPolicy(Qt.CustomContextMenu)   # 设置上下文菜单策略# 槽函数
def show_context_menu(pos):menu = QMenu(line_edit)menu.addAction("Custom Action")menu.exec(line_edit.mapToGlobal(pos))line_edit.customContextMenuRequested.connect(show_context_menu)   # 连接信号和槽window.show()
sys.exit(app.exec())

除了策略设置setContextMenuPolicy()的方法,还可以使用另一种方法:

通过重新定义contextMenuEvent() 的方法来定义右键菜单

PySide(PyQT)重新定义contextMenuEvent()实现鼠标右键弹出菜单-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/896819.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【实战 ES】实战 Elasticsearch:快速上手与深度实践-1.2.2倒排索引原理与分词器(Analyzer)

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 1.2.2倒排索引原理与分词器(Analyzer)1. 倒排索引:搜索引擎的基石1.1 正排索引 vs 倒排索引示例数据对比: 1.2 倒排索引核心结…

Springboot项目本地连接并操作MySQL数据库

目录 前提 准备工作 用cmd在本地创建数据库、表: 1.创建springboot项目(已有可跳过) 2.编辑Mybatis配置 3.连接数据库 4.创建模型类,用于与数据库里的数据表相连 5.创建接口mapper,定义对数据库的操作 6.创建…

java和Springboot和vue开发的企业批量排班系统人脸识别考勤打卡系统

演示视频: https://www.bilibili.com/video/BV1KU9iYsEBU/?spm_id_from888.80997.embed_other.whitelist&t52.095574&bvidBV1KU9iYsEBU 主要功能: 管理员管理员工,采集员工人脸特征值存入数据库,可选择多个员工批量排班…

打开 Windows Docker Desktop 出现 Docker Engine Stopped 问题

一、关联文章: 1、Docker Desktop 安装使用教程 2、家庭版 Windows 安装 Docker 没有 Hyper-V 问题 3、安装 Windows Docker Desktop - WSL问题 二、问题解析 打开 Docker Desktop 出现问题,如下: Docker Engine Stopped : Docker引擎停止三、解决方法 1、检查服务是否…

Mercury、LLaDA 扩散大语言模型

LLaDA 参考: https://github.com/ML-GSAI/LLaDA https://ml-gsai.github.io/LLaDA-demo/ 在线demo: https://huggingface.co/spaces/multimodalart/LLaDA Mercury 在线demo: https://chat.inceptionlabs.ai/ 速度很快生成

Rust~String、str、str、String、Box<str> 或 Box<str>

Rust语言圣经中定义 str Rust 语言类型大致分为两种:基本类型和标准库类型,前者由语言特性直接提供,后者在标准库中定义 str 是唯一定义在 Rust 语言特性中的字符串,但也是几乎不会用到的字符串类型 str 字符串是 DST 动态大小…

计算机网络——详解TCP三握四挥

文章目录 前言一、三次握手1.1 三次握手流程1.2 tcp为什么需要三次握手建立连接? 二、四次挥手2.1 四次挥手流程2.2 为什么是四次,不是三次?2.3 为什么要等待2msl?2.4 TCP的保活计时器 前言 TCP和UDP是计算机网络结构中运输层的两…

科普|无人机专业术语

文章目录 前言一、飞控二、电调三、通道四、2S、3S、4S电池五、电池后面C是什么意思?六、电机的型号七、什么是电机的KV值?八、螺旋桨的型号九、电机与螺旋桨的搭配 前言 无人机飞控系统控制飞行姿态,电调控制电机转速,遥控器通道控制飞行动作。电池C…

和鲸科技携手四川气象,以 AI 的力量赋能四川气象一体化平台建设

气象领域与农业、能源、交通、环境科学等国计民生关键领域紧密相连,发挥着不可替代的重要作用。人工智能技术的迅猛发展,为气象领域突破困境带来了新的契机。AI 技术能够深度挖掘气象大数据中蕴含的复杂信息,助力人类更精准地把握自然规律&am…

Redis缓存一致性难题:如何让数据库和缓存不“打架”?

标题:Redis缓存一致性难题:如何让数据库和缓存不“打架”?(附程序员脱发指南) 导言:当数据库和缓存成了“异地恋” 想象一下:你刚在美团下单了一份麻辣小龙虾,付款后刷新页面&#…

委托者模式(掌握设计模式的核心之一)

目录 问题: 举例: 总结:核心就是利用Java中的多态来完成注入。 问题: 今天刷面经,刷到装饰者模式,又进阶的发现委托者模式,发现还是不理解,特此记录。 举例: ​老板​…

[密码学实战]Java实现SM4加解密(ecb,cbc)及工具验证

前言 在现代信息安全领域,数据加密技术是保障数据安全的核心手段之一。SM4作为中国国家密码管理局发布的对称加密算法,因其高效性和安全性,广泛应用于金融、政务、通信等领域。本文将详细介绍如何使用Java实现SM4的加解密操作,并深入探讨SM4的几种常见加密模式及其原理。 …

动态规划刷题

文章目录 动态规划三步问题题目解析代码 动态规划 1. 状态表示:dp[i],表示dp表中i下标位置的值 2. 状态转移方程:以i位置位置的状态,最近的一步来划分问题,比如可以将状态拆分成前状态来表示现状态,dp[i] …

Vue 3 搭建前端模板并集成 Ant Design Vue(2025)

目录 一、环境安装 二、创建项目 三、前端工程化配置 四、引入组件库 五、选择 API 风格 1、选项式 API (Options API)​ 2、组合式 API (Composition API)​ 六、页面信息修改 七、通用布局选择 1、基础布局结构 2、全局底部栏 3、动态替换内容 4、全局顶部栏 …

【Mac】git使用再学习

目录 前言 如何使用github建立自己的代码库 第一步:建立本地git与远程github的联系 生成密钥 将密钥加入github 第二步:创建github仓库并clone到本地 第三步:上传文件 常见的git命令 git commit git branch git merge/git rebase …

六十天前端强化训练之第七天CSS预处理器(Sass)案例:变量与嵌套系统详解

欢迎来到编程星辰海的博客讲解 目录 一、知识讲解(3000字) 1. Sass基础概念 2. 变量系统 2.1 变量定义 2.2 数据类型 2.3 作用域优先级 2.4 变量实践场景 3. 嵌套系统 3.1 选择器嵌套 3.2 属性嵌套 3.3 嵌套规则 二、核心代码示例 完整SCSS…

DeepSeek掘金——DeepSeek R1驱动的PDF机器人

DeepSeek掘金——DeepSeek R1驱动的PDF机器人 本指南将引导你使用DeepSeek R1 + RAG构建一个功能性的PDF聊天机器人。逐步学习如何增强AI检索能力,并创建一个能够高效处理和响应文档查询的智能聊天机器人。 本指南将引导你使用DeepSeek R1 + RAG构建一个功能性的PDF聊天机器人…

基于 ‌MySQL 数据库‌对三级视图(用户视图、DBA视图、内部视图)的详细解释

基于 ‌MySQL 数据库‌对三级视图(用户视图、DBA视图、内部视图)的详细解释,结合理论与实际操作说明: 一、三级视图核心概念 数据库的三级视图是 ANSI/SPARC 体系结构的核心思想,MySQL 的实现逻辑如下: …

WP 高级摘要插件:助力 WordPress 文章摘要精准自定义显示

wordpress插件介绍 “WP高级摘要插件”功能丰富,它允许用户在WordPress后台自定义文章摘要。 可设置摘要长度,灵活调整展示字数;设定摘要最后的显示字符, 如常用的省略号等以提示内容未完整展示;指定允许在摘要中显示…

三次握手内部实现原理

socket()创建一个新的套接字 int socket(int domain, int type, int protocol); 参数: domain:地址族,如 AF_INET(IPv4),AF_INET6(IPv6) type:套接字类型&…