| ID | ... | Creation date | June 15, 2009 |
| Platform | S60 3rd Edition, FP1, FP2 S60 5th Edition | Tested on devices | Nokia 5800 XpressMusic |
| Category | Qt for S60 | Subcategory | UI |
| Keywords (APIs, classes, methods, functions): QMenu |
This code snippets shows how to create sub-menu in Qt. we need to call addMenu() method to add submenu in existing menu item.
This snippet can be self-signed. As it does not use any API which require developer/certified signing.
#ifndef SUBMENU_H
#define SUBMENU_H
#include <QtGui/QMainWindow>
#include "ui_SubMenu.h"
class SubMenu : public QMainWindow
{
Q_OBJECT
public:
SubMenu(QWidget *parent = 0);
~SubMenu();
private slots:
void wikiForumNokia();
void DiBoForumNokia();
void nokiaIndia();
void nokiaEurope();
void help();
void about();
private:
void createMyMenus();
private:
Ui::SubMenuClass ui;
QMenu *nokiaMenu;
QMenu *forumNokiaMenu;
QAction *menu_nokiaIndiaAction;
QAction *menu_nokiaEuropeAction;
QAction *menu_wikiAction;
QAction *menu_DiBoAction;
QAction *menu_aboutAction;
QAction *menu_helpAction;
QAction *menu_exitAction;
};
#endif // SUBMENU_H
#include "SubMenu.h"
#include <QMenu>
#include <QMessageBox>
#include <QDesktopServices>
#include <QUrl>
SubMenu::SubMenu(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
setWindowTitle(tr("Sub Menus"));
//Create memu and sub menu.
createMyMenus();
}
void SubMenu::createMyMenus()
{
//add action for help menu.
menu_helpAction = new QAction(tr("Help"), this);
menuBar()->addAction(menu_helpAction);
connect(menu_helpAction, SIGNAL(triggered()), this, SLOT(help()));
//add action for about menu.
menu_aboutAction = new QAction(tr("About"), this);
menuBar()->addAction(menu_aboutAction);
connect(menu_aboutAction, SIGNAL(triggered()), this, SLOT(about()));
/* for nokia menu and its sub menus. */
//create action Nokia India sub menu item.
menu_nokiaIndiaAction = new QAction(tr("Nokia India"), this);
connect(menu_nokiaIndiaAction, SIGNAL(triggered()), this, SLOT(nokiaIndia()));
//create action Nokia Europe sum menu item
menu_nokiaEuropeAction = new QAction(tr("Nokia Europe"), this);
connect(menu_nokiaEuropeAction, SIGNAL(triggered()), this, SLOT(nokiaIndia()));
//add menu item nokia to main menu
nokiaMenu = menuBar()->addMenu(tr("Nokia"));
//add action for nokia india sub-menu
nokiaMenu->addAction(menu_nokiaIndiaAction);
//add action for nokia india sub-menu
nokiaMenu->addAction(menu_nokiaEuropeAction);
//create action for Discussion Boards sub menu item
menu_DiBoAction = new QAction(tr("Discussion Boards"), this);
connect(menu_DiBoAction, SIGNAL(triggered()), this, SLOT(DiBoForumNokia()));
//create action for Wiki sub menu item
menu_wikiAction = new QAction(tr("Wiki"), this);
connect(menu_wikiAction, SIGNAL(triggered()), this, SLOT(wikiForumNokia()));
//add menu item forum nokia to menu item nokia
forumNokiaMenu = nokiaMenu->addMenu(tr("Forum Nokia"));
//add action for Discussion Boards sub-menu
forumNokiaMenu->addAction(menu_DiBoAction);
//add action for Wiki sub-menu
forumNokiaMenu->addAction(menu_wikiAction);
//Add action for exit menu.
menu_exitAction = new QAction(tr("Exit"), this);
menuBar()->addAction(menu_exitAction);
connect(menu_exitAction, SIGNAL(triggered()), this, SLOT(close()));
}
/* handle action for wiki sub-menu item. */
void SubMenu::wikiForumNokia()
{
QDesktopServices::openUrl(QUrl(tr("http://wiki.forum.nokia.com/index.php/Wiki_Home")));
}
/* handle action for Discussion Boards sub-menu item. */
void SubMenu::DiBoForumNokia()
{
QDesktopServices::openUrl(QUrl(tr("http://discussion.forum.nokia.com/forum/")));
}
/* handle action for nokia india sub-menu item. */
void SubMenu::nokiaIndia()
{
QDesktopServices::openUrl(QUrl(tr("http://www.nokia.co.in/")));
}
/* handle action for nokia europe sub-menu item. */
void SubMenu::nokiaEurope()
{
QDesktopServices::openUrl(QUrl(tr("http://europe.nokia.com/home")));
}
/* handle action for help menu item. */
void SubMenu::help()
{
QMessageBox::information(this, tr("Help Menu"),tr("This example shows how to create submenu."));
}
/* handle action for about menu item. */
void SubMenu::about()
{
QMessageBox::about(this, tr("About Menu"),tr("Testing Sub-Menus."));
}
SubMenu::~SubMenu()
{
}
The code snippet is expected to show sum-menus in application.
No related wiki articles found