Qt自定义菜单项
2024-08-27 20:03:44
经常会看到一些菜单的部分项是由几个按钮组成的,如酷狗、QQ、360都有类似菜单,对于常规的菜单项,图标 + 文字 实现一个事件,很容易完成,那么怎么自定义菜单项呢?
Qt提供了支持,就是利用QWidget + QWidgetAction来完成。QWidgetAction继承自QAction,无法通过继承来实现一个界面,但它提供了setDefaultWidget来绑定一个界面,使用起来就更加方便了。
下面实现一个没有Action的菜单,并通过按钮显示出来:
void UserMenu::CreateMenu()
{
//播放项
QWidgetAction *pWdtAction = new QWidgetAction(this);
//播放项界面,继承自QWidget的类
PlayWidget *playWdt = new PlayWidget(this);
pWdtAction->setDefaultWidget(playWdt);
//创建一个包含声音调整控件的界面项
QWidgetAction *pVoice = new QWidgetAction(this);
QWidget *pVoiceWdt = new QWidget(this);
QSlider *pSlider = new QSlider(Qt::Horizontal);
QHBoxLayout *layout = new QHBoxLayout(pVoiceWdt);
layout->addWidget(pSlider);
pVoiceWdt->setLayout(layout);
pVoice->setDefaultWidget(pVoiceWdt);
//生成菜单栏
QMenu *pMenu = new QMenu(this);
pMenu->addAction(pWdtAction);
pMenu->addSeparator();
pMenu->addAction(pVoice);
pMenu->addAction(QStringLiteral("显示歌词"));
pMenu->addAction(QStringLiteral("锁定歌词"));
pMenu->addSeparator();
pMenu->addAction(QStringLiteral("选项设置"));
pMenu->addSeparator();
pMenu->addAction(QStringLiteral("登陆"));
pMenu->addAction(QStringLiteral("退出"));
ui.pushButton->setMenu(pMenu);
}
初略效果图如下:
最新文章
- Spring的JDBC框架
- unity3d 第三人称视角的人物移动以及相机控制
- final、finally、finalize的区别
- Python 编辑器 tips
- python 多线程threading
- Spring MVC小结
- 快速上手如何使用FluentData
- hduoj 4715 Difference Between Primes 2013 ACM/ICPC Asia Regional Online —— Warmup
- selenium和Firefox版本不兼容
- http://www.cnblogs.com/TankXiao/p/4018219.html
- 小qyvlik 先看两个视频,和 QtQuick UI 问答
- openStack icehouse for centos6.4 production Env 实战
- 全栈必备 JavaScript基础
- python编程总结
- javascript基础-闭包
- 调用本地摄像头拍照(H5和画布)
- 学python走过的坑一 类的实例化
- 安装Redis 4.0单实例
- css3三角形冒泡泡图形制作
- MySQL之Haproxy+Keepalived+MySQL高可用均衡负载部署 (网络摘抄)
热门文章
- 【BZOJ1486】【HNOI2009】最小圈 分数规划 dfs判负环。
- mybatis0212 mybatis逆向工程 (MyBatis Generator)
- PXC的原理
- Python基础教程之List对象 转
- 线程控制之线程和I/O
- Android:Activity之间跳转和参数传递
- OpenVPN中的几个和连接相关的Timer解析
- Mac 下配置Tomcat7和eclipse中配置tomcat
- 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include ";StdAfx.h";”?
- 解决TableView / ScrollView上的Menu问题(1滑出View区域还可点击2导致点击menu后View不能滑动)