歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Qt自定義菜單項

經常會看到一些菜單的部分項是由幾個按鈕組成的,如酷狗、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);

}

初略效果圖如下:

Ubuntu 環境下Gtk與QT編譯環境安裝與配置 http://www.linuxidc.com/Linux/2013-08/88539.htm

Linux系統下QT環境搭建 http://www.linuxidc.com/Linux/2013-07/87576.htm

Ubuntu下QT控制台程序無法運行的解決方案以及XTerm的配置方法 http://www.linuxidc.com/Linux/2013-06/86244.htm

Ubuntu 10.04下QT4.7.4移植詳解 http://www.linuxidc.com/Linux/2013-01/77930.htm

Ubuntu 14.04下安裝部署Qt5開發環境 http://www.linuxidc.com/Linux/2014-05/101774.htm

Qt 的詳細介紹:請點這裡
Qt 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved