QWidgetAction介绍:

大多数action用作菜单中条目,或者状态栏中按钮。很多情况,我们需要一些复杂Qt部件,例如具有缩放功能的按钮(Qtoolbar中QcomboBox表示不同的缩放等级),QToolBar中提供了InsertWidget函数,提供用户自定义的部件。
如果你想要在容器中实现一些通用定制可视化的部件,你需要继承QWidget部件。
如果在QToobBar添加了QWidgetAction,就会调用QWidgetAction::createWidget(),重载该函数,构建一个包含父属性(parent)通用新部件。
如果一个action从容器中移除,那么QWidgetAction::deleteWidget()就会已先前的构建的通用部件作为参数。默认重载函数隐藏了部件,且通过使用QObject::deleteLater删除它。
如果你设计一个部件,你可以通过setDefaultWidget()来设置为默认组件。添加到QToolBar或者支持QWidgetAction的action容器中的action,能够被使用起来。
注意:

createWidget说明:

如果action添加到一个部件容器,这个createWidget就会被调用。如果不希望自定义的小部件在指定父部件展示,则应返回0。

class MyAction:public QWidgetAction
{Q_OBJECT
public:MyAction(QWidget *parent);QWidget *createWidget(QWidget *parent);QLineEdit * lineedit;
signals:void changetext(QString content);public slots:void onchangtext();};```cpp
#include "myaction.h"
#include <QMenu>
//#include <QMenuBar>
#include <QAction>
#include <QLineEdit>
#include <QLabel>
#include <QHBoxLayout>MyAction::MyAction(QWidget *parent):QWidgetAction(parent)
{}
QWidget *MyAction::createWidget(QWidget *parent)
{QHBoxLayout* vbox = new QHBoxLayout();lineedit = new QLineEdit();QLabel * tip = new QLabel();tip->setText(tr("请输入内容:"));tip->resize(40,40);vbox->addWidget(tip);vbox->addWidget(lineedit);vbox->setGeometry(QRect(100,30,200,100));QWidget *centralWidget = new QWidget(parent); //QMainWindow 有一个中央窗体!所以你的布局必须得在它上面centralWidget->setLayout(vbox);connect(lineedit,SIGNAL(returnPressed()),this,SLOT(onchangtext()));return centralWidget;
}void MyAction::onchangtext()
{QString content = lineedit->text();emit changetext(content);}

setDefaultWidget说明

将部件设置为默认部件。所有权转移到QWidgetAction。除非子类重新实现createWidget()以返回新的部件,否则当容器部件通过requestWidget()获取部件时,将使用默认部件。
(不用实现createWidget()而实现自定义Action)
QMenu *menu3= menuBar()->addMenu(tr("菜单"));
QLabel *label = new QLabel();
label->setText("hello world");
QWidgetAction *action3 = new QWidgetAction(this);
action3->setDefaultWidget(label);
menu3->addAction(action3);

requestWidget说名

返回一个用来表现action的部件,带有指定parent。
支持actions的容器部件,在可视化的时候,会调用此函数。

QWidgetAction相关推荐

  1. QWidgetAction实现鼠标滑过菜单项图标高亮显示

    需求是鼠标滑过菜单项时,菜单项的文字.icon以及子菜单的小箭头都要高亮显示,qss中只能设置item背景色.文字颜色以及子菜单小箭头的样式,icon的图片不能切换,另外曾经想过用indicator( ...

  2. Qt工作笔记-自定义菜单(右键菜单)

    所以,只要重写createWIdget()这个函数就阔以了! 把写好的界面放到这个parent里面不就阔以了! 写好的界面如下: 运行截图如下: 源码如下: mypopwidget.h #ifndef ...

  3. 第五章 应用程序主窗口

    2019-9-11 主窗口框架 菜单栏(菜单项由QAction动作类实现).工具栏(可以移动).中心部件(放入窗口部件).Dock部件.状态栏 1)使用资源(Qt资源文件.嵌入到可执行文件之中).菜单 ...

  4. Qt应用程序主窗口框架

    Qt 应用程序主窗口框架 1. Qt资源系统.菜单栏和工具栏 1.1 使用资源 1.2 编写代码方式添加菜单 1.3 菜单栏 1.4 工具栏 2. 中心部件 3. Dock部件 4. 状态栏 5. 例 ...

  5. Qt浅谈之三十系统托盘(QSystemTrayIcon)

    一.简介 Qt自带的例子/usr/lib64/qt4/examples/desktop/systray中详尽介绍了系统托盘的功能,在其基础上进行拓展,定制适合自己的系统托盘.        托盘菜单实 ...

  6. Qt学习之界面UI编程应用

    Qt作为c++的GUI编程框架,在Qt4时代,一直是传统的基于QtWidget的C++编程,而到了Qt5,为了适用当前的移动应用开发浪潮,Qt提供了,另一套界面框架QtQuick,它是基于QML语言( ...

  7. Qt之定制个性化系统托盘菜单(仿360安全卫士)

    一.效果 上图是我仿的360安全卫士的托盘菜单.顶部和底部的两个菜单项都将背景色设置成了360安全卫士的主题色,中间的大菜单项由6个按钮组成,像这些非规则的菜单项都需定制.虽然360安全卫士总是无缘无 ...

  8. Qt中添加资源文件及资源文件的使用

    1.将包含各种icon的名为 resource文件夹放在.pro所在的文件夹中 2.右键工程文件夹,添加新文件->Qt--->Qt资源文件->起名为resource,保存在.pro所 ...

  9. 【QT】QT菜单栏、状态栏、工具栏

    菜单栏.工具栏.状态栏 主窗口框架(QMainWindow)拥有自己的布局,包括以下组件: 菜单栏 菜单栏包含了一个下拉菜单项的列表,这些菜单项通过QAction动作类实现.一个主窗口只能有一个菜单栏 ...

最新文章

  1. 解决mysql中limit和in不能同时使用的问题
  2. redis-5.0.4集群部署
  3. 49、Power Query-合并查询温故知新
  4. latex 加粗_LaTeX论文模板
  5. 【原创】kafka client源代码分析
  6. 开源NAS系统使用总结
  7. C++函数模板和普通函数的调用规则
  8. decorators 参数_Python Decorators(二):Decorator参数
  9. java重载中this的作用_Java2:构造方法、方法重载和this关键字
  10. mysql 排序字段 添加索引吗_mysql需要在哪些字段上加索引?
  11. Java系统架构的演化之路
  12. bilibili直播: Vue.js Podcast(小记录)~~~
  13. 安卓开发(简单打开前置摄像头并显示)
  14. RabbitMQ报错 o.s.a.r.c.CachingConnectionFactory : Channel shutdown: channel error; protocol meth
  15. GoLang结构体解析多维复杂json 坑了2天,毕竟还是我太弱了
  16. python 文字转语音 带情感_Python文字转换语音,让你的文字会「说话」抠脚大汉秒变撒娇萌妹...
  17. kohana php版本,kohana框架的入门学习 2.0版本的
  18. htc+one+m7+linux驱动,htc one m7刷入recovery的教程
  19. 2020年全球半导体清洗设备发展现状、竞争格局及中国企业发展进展分析,行业集中度较高,国产化进程达到20%「图」
  20. 这四个重要的用研技能

热门文章

  1. C语言-常用数学函数
  2. educoder第2关:任务2-CTGU实验2-查询27
  3. Java课设:关于火车售票系统的注意事项
  4. 《BIG DATA大数据日知录 架构和算法》读书笔记
  5. 融合动态反向学习的阿奎拉鹰与哈里斯鹰混合优化算法
  6. Java Lambda简化Comparator接口匿名内部类写法
  7. 太阁CCNA笔记(1)
  8. 多核的歇斯底里和线程的困惑
  9. 基于 dpdk-nginx 的 c1000k 并发研发
  10. 《凌云》第六期——直击AWDC2014-阿里云生态系统观察