歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Qt自定義菜單項

Qt自定義菜單項

日期:2017/3/1 9:30:04   编辑:Linux編程

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