所以,只要重写createWIdget()这个函数就阔以了!

把写好的界面放到这个parent里面不就阔以了!

写好的界面如下:

运行截图如下:

源码如下:

mypopwidget.h

#ifndef MYPOPWIDGET_H
#define MYPOPWIDGET_H#include <QWidget>namespace Ui {
class MyPopWidget;
}class MyPopWidget : public QWidget
{Q_OBJECTpublic:explicit MyPopWidget(QWidget *parent = 0);~MyPopWidget();private:Ui::MyPopWidget *ui;
};#endif // MYPOPWIDGET_H

mywidgetaction.h

#ifndef MYWIDGETACTION_H
#define MYWIDGETACTION_H#include <QObject>
#include <QWidgetAction>class MyWidgetAction : public QWidgetAction
{Q_OBJECT
public:explicit MyWidgetAction(QWidget *parent = 0);protected:QWidget *createWidget(QWidget *parent);
};#endif // MYWIDGETACTION_H

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
class QMenu;namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();public slots:void onContextMenu(const QPoint &pt);private:Ui::Widget *ui;QMenu *m_menu;
};#endif // WIDGET_H

main.cpp

#include "widget.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

mypopwidget.cpp

#include "mypopwidget.h"
#include "ui_mypopwidget.h"MyPopWidget::MyPopWidget(QWidget *parent) :QWidget(parent),ui(new Ui::MyPopWidget)
{ui->setupUi(this);
}MyPopWidget::~MyPopWidget()
{delete ui;
}

mywidgetaction.cpp

#include "mywidgetaction.h"
#include "mypopwidget.h"MyWidgetAction::MyWidgetAction(QWidget *parent): QWidgetAction(parent)
{}QWidget *MyWidgetAction::createWidget(QWidget *parent)
{MyPopWidget *myPopWidget=new MyPopWidget(parent);return myPopWidget;
}

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QMenu>
#include <QDebug>
#include <QPoint>
#include "mywidgetaction.h"
#include <QPushButton>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);ui->listView->setContextMenuPolicy(Qt::CustomContextMenu);connect(ui->listView,SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(onContextMenu(QPoint)));
}Widget::~Widget()
{delete ui;
}void Widget::onContextMenu(const QPoint &pt)
{m_menu=new QMenu(this);MyWidgetAction *widgetAction=new MyWidgetAction(m_menu);m_menu->addAction("传统的-第一个右键");m_menu->addAction(widgetAction);m_menu->exec(ui->listView->mapToGlobal(pt));
}

Qt工作笔记-自定义菜单(右键菜单)相关推荐

  1. Qt工作笔记-自定义开关控件

    1.自定义开关控件: 2.点击有动画效果: 3.在动画效果中,不再响应信号: 运行截图如下: 输出响应信号: 源码如下: myonoff.h #ifndef MYONOFF_H #define MYO ...

  2. Qt工作笔记-自定义QSortFilterProxyModel实现多列分别过滤

    程序运行截图如下: 原理,重写QSortFilterProxyModel类中的filterAcceptsRow即可: 源码如下: mysortfilterproxymodel.h #ifndef MY ...

  3. Qt工作笔记-自定义模型【继承QAbstractTableModel】

    程序运行截图如下: 代码如下: mymodel.h #ifndef MYMODEL_H #define MYMODEL_H#include <QAbstractTableModel> #i ...

  4. Qt工作笔记-自定义打印及存日志及stderr转stdout(Linux程序调试技巧,提高开发效率)

    如下的代码: #include <QCoreApplication> #include <QDebug> #include <QByteArray> #includ ...

  5. 自定义右键菜单,禁用浏览器自带的右键菜单[右键菜单实现--Demo]

    许多从事Web开发的会发现有些事,我们需要禁用浏览器本事自带的右键菜单,而实现自定义的右键菜单 下面我们也来实现一个自定义的右键菜单 首先来创建JSP页面 1 <%@ page language ...

  6. 自定义桌面右键菜单-Win 10 版

    自定义桌面右键菜单-Win 10 版 进入注册表编辑器 编辑新菜单 查看效果 进入注册表编辑器 通过快捷键"win+r",弹出运行框,输入 regedit .如下图所示: 在打开的 ...

  7. 关于电脑注册表regedit自定义管理右键菜单选项实例(删除增加)

    前言:删除电脑多余右键菜单的具体操作 所有关于电脑的操作都可以通过修改注册表来实现.而随着电脑软件的安装,本就为方便人们操作的右键菜单变的愈来愈臃肿.但我们可以自定义管理大多数右键菜单,这篇帖子就是为 ...

  8. w764位计算机右键管理,Win7自定义管理右键菜单的完美步骤

    Win7系统右键菜单就像是一个快捷键的使用,用户通过右键菜单能够快速打开自己所要打开的程序,很多用户认为右键菜单上的选项是固定的,其实不是的,用户可以通过自定义管理来让右键菜单更加完美. Win7自定 ...

  9. 如何在canvas画布上自定义鼠标右键菜单内容?

    用户大大提了一个需求,想要在画布上能够右键快捷点击使用某个功能,小菜鸟肯定要满足啊(委屈脸),然后靠着强大的各路神仙,写下了如下代码,终于实现了,为自己放个烟花~~~不喜勿喷哦~ 1.自定义鼠标右键菜 ...

最新文章

  1. 大端模式字节序和位序以及操作
  2. 微服务和其他常见架构
  3. Linux 命令(103)—— unzip 命令
  4. 计算机及服务器硬件组成结合企业运维场景知识
  5. 【LeetCode-面试算法经典-Java实现】【129-Sum Root to Leaf Numbers(全部根到叶子结点组组成的数字相加)】...
  6. 临时号码,接收短信验证码
  7. 用excel做logistic回归分析_利用SPSS进行Logistic回归分析
  8. 高通平台添加自己的product后com.qualcomm.qti.tetherservice不停crash
  9. Android中的PackageManager
  10. matlab可以做什么,matlab仿真用来干什么
  11. 找出若干个非零数中的最小值以及它们的平均值
  12. 各层电子数排布规则_按照核外电子排布规律:各电子层最多容纳电子数2n2(n为电子层数,...
  13. brew upgrade出现It seems there is already an App at的解决方法
  14. 今日头条自动开宝箱脚本
  15. 磐石计划(二)——虚拟机win7安装KB4474419和 KB4490628补丁
  16. AP Memory IoT RAM——嵌入式物联网最佳存储解决方案
  17. 如何基于WebRTC搭建一个简单的视频会议
  18. OpenCV 最新版windows下安装教程
  19. [iOS]一行代码集成空白页面占位图(基于runtime+MJRefresh思想)
  20. 用自编码器对数据进行降维

热门文章

  1. 什么样的程序员是最让人讨厌的?朋友们注意了,别做这种人!
  2. 不写程序,整体就泡 土豆网电视剧
  3. 【绿色版】飞鸽传书2011绿色版
  4. 飞鸽传书文件传输实现原理
  5. 用VC写Assembly代码(5) --函数调用(二)
  6. C语言程序设计基础之结构
  7. 随便写写有关微软2004软件架构师峰会的个人感想(一)
  8. 第 1 节:前端面试指南 — 简历篇
  9. 【vue2.0进阶】轻松理解Vuex的3个核心概念
  10. mysql found row_mysql found_row()使用详解