zoukankan      html  css  js  c++  java
  • Qt自定义菜单项

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

    imageimage

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

    初略效果图如下:

    image

  • 相关阅读:
    mysql 库,表,数据操作
    mysql 初识数据库
    MySQL 索引 视图 触发器 存储过程 函数
    MySQL 事物和数据库锁
    MySQL 约束和数据库设计
    MySQL 创建千万集数据
    MySQL 各种引擎
    求1,1,2,3,5,8,13 斐波那契数列第N个数的值
    WEB前端研发工程师编程能力成长之路(1)
    XML DOM
  • 原文地址:https://www.cnblogs.com/lingluotianya/p/3789245.html
Copyright © 2011-2022 走看看