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)));
    记录一下,以后忘了还可以翻一下。

  • 相关阅读:
    linux--->PHP常用模块解析
    php--->php 缓冲区 buffer 原理
    php--->php打印格式化
    mysql--->MySQL错误日志
    mysql--->mysql慢查询
    单双引号问题
    博客园图片显示问题
    laravel 常用知识总结
    laravel config文件的使用
    laravel 接收json串
  • 原文地址:https://www.cnblogs.com/FKdelphi/p/13689422.html
Copyright © 2011-2022 走看看