zoukankan      html  css  js  c++  java
  • Qt-QMenu的自定义内容-在右击列表中增加一个EDIT框

    相关资料:

    https://www.it610.com/article/1293180853203050496.htm

    QMenu的作用
    QMenu很常用,也很方便,可以替代很多弹出框,做交互。基础用法就是添加QAction,今天不记录这些。要记录的是QWidgetAction,可以在QMenu里面添加自定义的action。

    1、为什么QWidget放在QWidgetAction里面,QMenu不显示?
    我需要用到一个自定义的widget放入到QMenu中,但是一直都不显示效果。
    然后我就随便放进去一个编辑框,很容易就显示了。

    void Widget::initMenu()
    {
    m_menu = new QMenu();
    m_menu->setMinimumWidth(500);
    QLineEdit *view = new QLineEdit();
    QWidgetAction *action = new QWidgetAction(m_menu);
    action->setDefaultWidget(view);
    m_menu->addAction(action);
    }

    void Widget::mousePressEvent(QMouseEvent *evt)
    {
    if (evt->button() == Qt::RightButton) {
    m_menu->popup(evt->globalPos());
    }
    }
    但是当我把QLineEdit换成自定义的CustomWidget后,Qmenu就不显示,很坑爹。后来发现自定义的CustomWidget里面使用布局,就会显示。
    如果有哪位大佬知道为什么,请知会下小弟,小弟没有找到原因。
    ps:使用自定义widget的时候,可以使用查找子控件做一些事件处理。

    2、QMenu在列表中的应用
    在QListWidget,QTreeWidget等列表中也可以很方便的使用自定义菜单,处理一些事件。

    首先要设置菜单策略:
    setContextMenuPolicy(Qt::CustomContextMenu);

    然后使用customContextMenuRequested(QPoint)信号实现弹窗
    connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotPopMenu(QPoint)));
    记录一下,以后忘了还可以翻一下。

  • 相关阅读:
    Python 中的一些小技巧
    Java/Python/Elixir 正则库使用上的注意事项
    Scrapy 学习笔记(一)数据提取
    记第一次面试
    Spring Web MVC 笔记
    Java 单元测试
    Spring 笔记(四)AOP
    C 语言 进阶
    编程的智慧
    Spring 笔记(三)Bean 装配
  • 原文地址:https://www.cnblogs.com/FKdelphi/p/13689422.html
Copyright © 2011-2022 走看看