QWidget菜单策略:Qt::ContextMenuPolicy

1、Qt::NoContextMenu:小部件没有上下文菜单,上下文菜单处理被推迟到小部件的父级。

2、Qt::PreventContextMenu:小部件没有上下文菜单,与NoContextMenu相比,处理不会延迟到小部件的父级。这意味着所有鼠标右键事件都可以传递到小部件本身。

3、Qt::DefaultContextMenu:调用小部件的QWidget::contextMenuEvent()处理程序。

void Widget::contextMenuEvent(QContextMenuEvent *event)
{
    QAction * action1 = new QAction(tr("菜单1"),this);
    QAction * action2 = new QAction(tr("菜单2"),this);

    this->addAction(action1);
    this->addAction(action2);

    QMenu contextMenu;
    contextMenu.addAction(action1);
    contextMenu.addAction(action2);
    contextMenu.exec(QCursor::pos());
}

4、Qt::ActionsContextMenu:小部件将QWidget::actions()显示为上下文菜单。

    this->setContextMenuPolicy(Qt::ActionsContextMenu);
    QAction * action1 = new QAction(tr("菜单1"),this);
    QAction * action2 = new QAction(tr("菜单2"),this);

    this->addAction(action1);
    this->addAction(action2);

5、Qt::CustomContextMenu:小部件发出QWidget::customContextMenuRequested()信号。在连接此信号的槽中创建菜单并显示。

    this->setContextMenuPolicy(Qt::CustomContextMenu);
    connect(this,&Widget::customContextMenuRequested,this, &Widget::slotCustomContextMenu);

void Widget::slotCustomContextMenu(const QPoint &point)
{
    QAction * action1 = new QAction(tr("菜单1"),this);
    QAction * action2 = new QAction(tr("菜单2"),this);

    this->addAction(action1);
    this->addAction(action2);

    QMenu contextMenu;
    contextMenu.addAction(action1);
    contextMenu.addAction(action2);
    contextMenu.exec(QCursor::pos());
}
  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值