You Are Here:

Community: Wiki

This page was last modified on 1 November 2009, at 13:41.

How to add submenu in Qt for Symbian

From Forum Nokia Wiki

Reviewer Approved   


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

Overview

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.

Preconditions


Headers files

#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

Source

#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()
{
 
}

Postconditions

The code snippet is expected to show sum-menus in application.
Image:Submenu1.JPG

Image:Submenu2.JPG

External Links

Internal Links

Code Example

  • The Code Example will show sub-menu in application and is tested on Nokia 5800 XpressMusic.

Related Wiki Articles

No related wiki articles found

Rate This

 
Bookmark this page: DeliciousDiggFacebookGoogleYahooStumbleUponRedditDiigoTechnocratiTwitter  Share this page Share this page Print this Page Print this page Invite a friend Invite a friend
京ICP备05048969号    Email Newsletters Press Terms & Conditions Privacy Policy Sitemap Contact Us © 2009 Nokia 
RDF Facets: qdcZidentifierQSxhttpE3aE2fE2fwikiE2eforumE2enokiaE2ecomE2findeE78E2ephpE2fCS001433E5fE2dE5fWatchingE5faE5fYouTubeE5fvideoE5finE5fE51tX qdcZtypeQUqfnZE45E78cludedFromGeneralE4cistingsQ qdcZtypeQUqfntypeZCommunityContentQ qdcZtypeQUqfntypeZE52esourceQ qdcZtypeQUqfntypeZWebpageQ qdcZtypeQUqfntypeZWikiContentQ qdcZtypeQUqmarsZManagedE52esourceQ qdcZtypeQUqwebZInformationE52esourceQ qdcZtypeQUqwebZPageQ qdcZtypeQUqwebZE52esourceQ qdcZtypeQUqrdfsZE52esourceQ qfnZtopicQUqfnTopicZE71tQ qfnZtypeQUqfntypeZCommunityContentQ qfnZtypeQUqfntypeZE52esourceQ qfnZtypeQUqfntypeZWebpageQ qfnZtypeQUqfntypeZWikiContentQ qfnZuserE5ftagQSxE71tX qmarsZlanguageQUxhttpE3aE2fE2fswE2enokiaE2ecomE2flanguageE2d1E2fenX qrdfZtypeQUqfnZE45E78cludedFromGeneralE4cistingsQ qrdfZtypeQUqfntypeZCommunityContentQ qrdfZtypeQUqfntypeZE52esourceQ qrdfZtypeQUqfntypeZWebpageQ qrdfZtypeQUqfntypeZWikiContentQ qrdfZtypeQUqmarsZManagedE52esourceQ qrdfZtypeQUqwebZInformationE52esourceQ qrdfZtypeQUqwebZPageQ qrdfZtypeQUqwebZE52esourceQ qrdfZtypeQUqrdfsZE52esourceQ
User Rating: qfnZuserE5FratingQNx3E2E0000X