码迷,mamicode.com
首页 > 其他好文 > 详细

Qt自定义菜单项

时间:2014-06-15 13:10:58      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   com   get   

经常会看到一些菜单的部分项是由几个按钮组成的,如酷狗、QQ、360都有类似菜单,对于常规的菜单项,图标 + 文字 实现一个事件,很容易完成,那么怎么自定义菜单项呢?

bubuko.com,布布扣bubuko.com,布布扣

 

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);
}

 

初略效果图如下:

bubuko.com,布布扣

Qt自定义菜单项,布布扣,bubuko.com

Qt自定义菜单项

标签:style   blog   http   color   com   get   

原文地址:http://www.cnblogs.com/lingluotianya/p/3789245.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!