设为首页 加入收藏

TOP

Qt自定义菜单项
2015-07-16 12:57:20 来源: 作者: 【 】 浏览:9
Tags:定义 单项

经常会看到一些菜单的部分项是由几个按钮组成的,如酷狗、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);


}


初略效果图如下:



】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Qt5中文显示出现乱码解决 下一篇苹果医疗研究平台 ResearchKit 源..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: