使用QProxyStyle定制QMenu (二)

本文介绍如何在QT中自定义QMenu的样式。首先展示了未定制的右键菜单的实现,通过设置QWidget的contextMenuPolicy属性。接着,创建了一个PopupMenuItemStyle类,该类继承自QProxyStyle,并将其应用到QMenu上,为后续的样式定制打下基础。
摘要由CSDN通过智能技术生成

显示一个还没定制的右键菜单

要在右键单击时显示弹出式的上下文菜单(a context menu)就要用到QWidget的contextMenuPolicy : Qt::ContextMenuPolicy这个属性。这个属性的值可以是一下几个:

常量 描述
Qt::NoContextMenu 0 该widget不具有上下文菜单,上下文菜单由其父widget处理
Qt::PreventContextMenu 4 该widget无具有上下文菜单,并且相对于NoContextMenu,处理的操作不会交由fuwidget处理,这意味着所有鼠标右键事件将保证通过QWidget::mousePressEvent(), 和 QWidget::mouseReleaseEvent()传递给widget本身
Qt::DefaultContextMenu 1 widget的QWidget::contextMenuEvent()函数将会被调用
Qt::ActionsContextMenu 2 widget把它的QWidget::actions()作为上下文菜单显示
Qt::CustomContextMenu 3 该widget会发出QWidget::customContextMenuRequested()信号

要显示上下文菜单我们有很多的方式,下面的是示范代码(后面这段代码基本不变,就不贴了):

mainwidget.h

#ifndef MAINWIDGET_H
#define MAINWIDGET_H

#include <QWidget>

class QMenu;
class MainWidget : public QWidget
{
   
    Q_OBJECT

public:
    MainWidget(QWidget 
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值