当前位置: 首页 > news >正文

上海的网站设计公司价格礼品册兑换 网站建设

上海的网站设计公司价格,礼品册兑换 网站建设,wordpress访问权限,wordpress 感染支付宝在 Qt 框架中,QMenu 类用于创建和管理菜单。菜单是用户界面的一部分,可以包含多个选项或动作,用户可以选择这些选项来执行特定的功能。菜单通常显示在菜单栏、上下文菜单(右键菜单)或工具栏中。 基本用法 创建菜单对象…

在 Qt 框架中,QMenu 类用于创建和管理菜单。菜单是用户界面的一部分,可以包含多个选项或动作,用户可以选择这些选项来执行特定的功能。菜单通常显示在菜单栏、上下文菜单(右键菜单)或工具栏中。
基本用法

创建菜单对象:

QMenu *menu = new QMenu(this); // 创建一个新的 QMenu 对象,父对象为当前小部件

添加动作:
使用 addAction 方法将 QAction 对象添加到菜单中。QAction 代表菜单中的一个选项或动作。

QAction *action1 = new QAction("Action 1", this);
menu->addAction(action1); // 将动作添加到菜单

显示菜单:
菜单可以在指定的位置显示,例如在鼠标光标位置。

menu->exec(QCursor::pos()); // 在当前光标位置显示菜单

在这里插入图片描述

widget.h

#pragma once#include <QtWidgets/QWidget>
#include "ui_widget.h"
#include <QMenu>class widget : public QWidget
{Q_OBJECTpublic:widget(QWidget *parent = nullptr);~widget();void contextMenuEvent(QContextMenuEvent* event) override;void initMenu();private:Ui::widgetClass ui;QMenu* m_pMenu = nullptr;
};

widget.cpp

#include "widget.h"
#include <QAction>
#include <QMessageBox>widget::widget(QWidget *parent): QWidget(parent)
{ui.setupUi(this);this->setContextMenuPolicy(Qt::DefaultContextMenu);initMenu();
}widget::~widget()
{}void widget::contextMenuEvent(QContextMenuEvent* event) {m_pMenu->exec(QCursor::pos());
}void widget::initMenu() {m_pMenu = new QMenu(this);QAction* pAc1 = new QAction("ac1");QAction* pAc2 = new QAction("ac2");QAction* pAc3 = new QAction("ac3");QAction* pAc4 = new QAction("ac4");QAction* pAc5 = new QAction("ac5");QAction* pAc6 = new QAction("ac6");QAction* pAc7 = new QAction("ac7");m_pMenu->addAction(pAc1);m_pMenu->addAction(pAc2);m_pMenu->addAction(pAc3);m_pMenu->addAction(pAc4);m_pMenu->addAction(pAc5);m_pMenu->addAction(pAc6);m_pMenu->addAction(pAc7);connect(pAc1, &QAction::triggered, [=] {QMessageBox::information(this, "title", "ac1");});connect(pAc2, &QAction::triggered, [=] {QMessageBox::information(this, "title", "ac2");});connect(pAc3, &QAction::triggered, [=] {QMessageBox::information(this, "title", "ac3");});connect(pAc4, &QAction::triggered, [=] {QMessageBox::information(this, "title", "ac4");});connect(pAc5, &QAction::triggered, [=] {QMessageBox::information(this, "title", "ac5");});connect(pAc6, &QAction::trigger, [=] {QMessageBox::information(this, "title", "ac6");});connect(pAc7, &QAction::trigger, [=] {QMessageBox::information(this, "title", "ac7");});
}

复盘

#include "widget.h"
#include <QAction>
#include <QMessageBox>widget::widget(QWidget *parent): QWidget(parent)
{ui.setupUi(this);// 设置上下文菜单策略为默认this->setContextMenuPolicy(Qt::DefaultContextMenu);initMenu(); // 初始化菜单
}widget::~widget()
{}void widget::contextMenuEvent(QContextMenuEvent* event) {m_pMenu->exec(QCursor::pos()); // 在光标位置执行菜单
}void widget::initMenu() {m_pMenu = new QMenu(this); // 创建新的QMenuQAction* pAc1 = new QAction("ac1"); // 创建动作ac1QAction* pAc2 = new QAction("ac2"); // 创建动作ac2QAction* pAc3 = new QAction("ac3"); // 创建动作ac3QAction* pAc4 = new QAction("ac4"); // 创建动作ac4QAction* pAc5 = new QAction("ac5"); // 创建动作ac5QAction* pAc6 = new QAction("ac6"); // 创建动作ac6QAction* pAc7 = new QAction("ac7"); // 创建动作ac7m_pMenu->addAction(pAc1); // 将动作ac1添加到菜单m_pMenu->addAction(pAc2); // 将动作ac2添加到菜单m_pMenu->addAction(pAc3); // 将动作ac3添加到菜单m_pMenu->addAction(pAc4); // 将动作ac4添加到菜单m_pMenu->addAction(pAc5); // 将动作ac5添加到菜单m_pMenu->addAction(pAc6); // 将动作ac6添加到菜单m_pMenu->addAction(pAc7); // 将动作ac7添加到菜单// 连接动作ac1的触发信号到槽函数,显示信息框connect(pAc1, &QAction::triggered, [=] {QMessageBox::information(this, "title", "ac1");});// 连接动作ac2的触发信号到槽函数,显示信息框connect(pAc2, &QAction::triggered, [=] {QMessageBox::information(this, "title", "ac2");});// 连接动作ac3的触发信号到槽函数,显示信息框connect(pAc3, &QAction::triggered, [=] {QMessageBox::information(this, "title", "ac3");});// 连接动作ac4的触发信号到槽函数,显示信息框connect(pAc4, &QAction::triggered, [=] {QMessageBox::information(this, "title", "ac4");});// 连接动作ac5的触发信号到槽函数,显示信息框connect(pAc5, &QAction::triggered, [=] {QMessageBox::information(this, "title", "ac5");});// 连接动作ac6的触发信号到槽函数,显示信息框connect(pAc6, &QAction::trigger, [=] {QMessageBox::information(this, "title", "ac6");});// 连接动作ac7的触发信号到槽函数,显示信息框connect(pAc7, &QAction::trigger, [=] {QMessageBox::information(this, "title", "ac7");});
}

setContextMenuPolicy

setContextMenuPolicy 是 Qt 中 QWidget 类的一个函数,用于设置小部件的上下文菜单策略。上下文菜单(也称为右键菜单)是用户通过右键单击触发的菜单。
Qt::ContextMenuPolicy 枚举定义了以下几种策略:

Qt::NoContextMenu: 禁用上下文菜单。

Qt::PreventContextMenu: 禁用默认上下文菜单,但仍然会触发 contextMenuEvent。

Qt::DefaultContextMenu: 使用 QWidget 的默认上下文菜单处理。

Qt::ActionsContextMenu: 显示与 QWidget 关联的动作(QAction)。

Qt::CustomContextMenu: 触发 customContextMenuRequested 信号,用户可以连接自己的槽函数来处理。

this->setContextMenuPolicy(Qt::DefaultContextMenu);

设置了默认的上下文菜单策略,即当用户右键单击小部件时,会触发 contextMenuEvent 函数。你可以在这个事件处理函数中自定义上下文菜单的行为,如下所示:

void widget::contextMenuEvent(QContextMenuEvent* event) {m_pMenu->exec(QCursor::pos()); // 在光标位置显示菜单
}

通过这个设置,你可以为小部件提供自定义的上下文菜单,而不是依赖于系统的默认菜单。

QAction 和 QMenu

QAction 和 QMenu 是 Qt 框架中用于创建和管理菜单项的类。

QAction* pAc1 = new QAction("ac1");

这行代码创建了一个新的 QAction 对象。QAction 表示一个动作,可以被用户在菜单、工具栏或快捷键中触发。构造函数接受一个字符串参数作为动作的文本标签。

QAction 构造函数: QAction(const QString &text, QObject *parent = nullptr)

text: 动作的标签文本。在这个例子中,标签是 “ac1”。

parent: 动作的父对象。这里没有指定父对象,默认值为 nullptr。

QAction* pAc1 = new QAction("ac1"); // 创建一个标签为“ac1”的新动作m_pMenu->addAction(pAc1);

这行代码将先前创建的 QAction 对象 pAc1 添加到菜单 m_pMenu 中。QMenu 是 Qt 中用于创建菜单的类,addAction 函数用于向菜单中添加一个动作。

QMenu 函数: void addAction(QAction *action)

action: 要添加到菜单中的 QAction 对象。

m_pMenu->exec(QCursor::pos());

m_pMenu->exec(QCursor::pos()); 是在 Qt 中显示上下文菜单的一种常见方式。

m_pMenu->exec(QCursor::pos());

m_pMenu:这是一个 QMenu 对象的指针,表示要显示的菜单。

exec():QMenu 类的成员函数,用于以模态方式显示菜单,并阻塞直到用户选择了菜单项或关闭了菜单。exec() 函数返回用户选择的 QAction 指针,如果用户没有选择任何项而是关闭了菜单,则返回 nullptr。

QCursor::pos():静态函数,返回当前鼠标光标的位置(以全局坐标系表示)。通过这个位置,可以在鼠标光标处显示菜单。

在上下文菜单事件中,我们通常会使用这行代码来显示上下文菜单:

void widget::contextMenuEvent(QContextMenuEvent* event) {m_pMenu->exec(QCursor::pos()); // 在光标位置显示菜单
}

显示菜单:exec() 方法会在指定位置显示菜单。在这个例子中,QCursor::pos() 返回当前光标的位置,因此菜单会在鼠标光标处弹出。

阻塞调用:exec() 是一个阻塞调用,这意味着程序执行会暂停在这一行,直到用户在菜单中选择一个动作或关闭菜单。然后,exec() 将返回选择的 QAction 或 nullptr。

结尾

最后,感谢您阅读我的文章,希望这些内容能够对您有所启发和帮助。如果您有任何问题或想要分享您的观点,请随时在评论区留言。
同时,不要忘记订阅我的博客以获取更多有趣的内容。在未来的文章中,我将继续探讨这个话题的不同方面,为您呈现更多深度和见解。
谢谢您的支持,期待与您在下一篇文章中再次相遇!

http://www.yayakq.cn/news/484109/

相关文章:

  • 网站内容如何管理网站锚文本的内链建设
  • 特色网站建设上海好牛网站建设
  • 图片做网站做土特产网站什么名字最好
  • 360 的网站链接怎么做天猫怎么开店铺
  • 开发一个网站模版版面设计图大全 模板
  • 网站建设 有哪些费用商标 做网站 是几类
  • 国际教育机构网站建设开发方案中国建设银行客户端下载官方网站
  • wordpress首页标题代码百度seo如何优化
  • 福州网站建设html5开发网站
  • 工信部的网站备案信息网站建设xml下载
  • 网站建设哪里公司好农村小伙创业做网站
  • 购买一个网站需要多少钱什么是seo站内优化
  • 北京app开发网站建设如何做品牌宣传与推广
  • 网站开发涉及到缓存吗网站开发开始阶段的主要任务包括( )
  • 全国网站直播平台被摧毁潜江资讯网电脑版
  • 郑州专业网站设计公司地址报告范文大全
  • 网站建设的主要工作网站建设与管理实训报告
  • js特效网站模板如何在百度做网站推广
  • 白云区同和网站建设为什么需要响应式网站
  • 素米高端品牌网站建设免费做网站推广的软件
  • 专业建站推荐如何删除首页wordpress
  • 关于做网站建设公司你应该知道的wordpress 缩略图判断
  • 网站设计英文翻译上海游玩攻略必去的地方
  • 网站风格对比照片书那个网站做的好
  • 深圳网站设计九曲网站建设wordpress插件删除
  • 张家港网站开发培训广告代理搜狗网站收录提交入口
  • 做ppt的兼职网站有哪些新闻自动采集网站源码
  • 广东东莞地图网站加上视频对seo影响
  • 做网站的注意什么问题长沙新媒体公司排名
  • wordpress建站seo个人简历表格电子版下载