Mega Code Archive

 
Categories / C++ / Qt
 

Adding menu to window

/**************************************************************************** ** ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial Usage ** Licensees holding valid Qt Commercial licenses may use this file in ** accordance with the Qt Commercial License Agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and Nokia. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file.  Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain additional ** rights.  These rights are described in the Nokia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file.  Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> QT_BEGIN_NAMESPACE class QAction; class QActionGroup; class QLabel; class QMenu; QT_END_NAMESPACE class MainWindow : public QMainWindow {     Q_OBJECT public:     MainWindow(); protected:     void contextMenuEvent(QContextMenuEvent *event); private slots:     void newFile();     void open();     void save();     void print();     void undo();     void redo();     void cut();     void copy();     void paste();     void bold();     void italic();     void leftAlign();     void rightAlign();     void justify();     void center();     void setLineSpacing();     void setParagraphSpacing();     void about();     void aboutQt(); private:     void createActions();     void createMenus();     QMenu *fileMenu;     QMenu *editMenu;     QMenu *formatMenu;     QMenu *helpMenu;     QActionGroup *alignmentGroup;     QAction *newAct;     QAction *openAct;     QAction *saveAct;     QAction *printAct;     QAction *exitAct;     QAction *undoAct;     QAction *redoAct;     QAction *cutAct;     QAction *copyAct;     QAction *pasteAct;     QAction *boldAct;     QAction *italicAct;     QAction *leftAlignAct;     QAction *rightAlignAct;     QAction *justifyAct;     QAction *centerAct;     QAction *setLineSpacingAct;     QAction *setParagraphSpacingAct;     QAction *aboutAct;     QAction *aboutQtAct;     QLabel *infoLabel; }; #endif #include <QtGui> #include "mainwindow.h" MainWindow::MainWindow() {     QWidget *widget = new QWidget;     setCentralWidget(widget);     QWidget *topFiller = new QWidget;     topFiller->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);     infoLabel = new QLabel(tr("<i>Choose a menu option, or right-click to "                               "invoke a context menu</i>"));     infoLabel->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);     infoLabel->setAlignment(Qt::AlignCenter);     QWidget *bottomFiller = new QWidget;     bottomFiller->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);     QVBoxLayout *layout = new QVBoxLayout;     layout->setMargin(5);     layout->addWidget(topFiller);     layout->addWidget(infoLabel);     layout->addWidget(bottomFiller);     widget->setLayout(layout);     createActions();     createMenus();     QString message = tr("A context menu is available by right-clicking");     statusBar()->showMessage(message);     setWindowTitle(tr("Menus"));     setMinimumSize(160, 160);     resize(480, 320); } void MainWindow::contextMenuEvent(QContextMenuEvent *event) {     QMenu menu(this);     menu.addAction(cutAct);     menu.addAction(copyAct);     menu.addAction(pasteAct);     menu.exec(event->globalPos()); } void MainWindow::newFile() {     infoLabel->setText(tr("Invoked <b>File|New</b>")); } void MainWindow::open() {     infoLabel->setText(tr("Invoked <b>File|Open</b>")); } void MainWindow::save() {     infoLabel->setText(tr("Invoked <b>File|Save</b>")); } void MainWindow::print() {     infoLabel->setText(tr("Invoked <b>File|Print</b>")); } void MainWindow::undo() {     infoLabel->setText(tr("Invoked <b>Edit|Undo</b>")); } void MainWindow::redo() {     infoLabel->setText(tr("Invoked <b>Edit|Redo</b>")); } void MainWindow::cut() {     infoLabel->setText(tr("Invoked <b>Edit|Cut</b>")); } void MainWindow::copy() {     infoLabel->setText(tr("Invoked <b>Edit|Copy</b>")); } void MainWindow::paste() {     infoLabel->setText(tr("Invoked <b>Edit|Paste</b>")); } void MainWindow::bold() {     infoLabel->setText(tr("Invoked <b>Edit|Format|Bold</b>")); } void MainWindow::italic() {     infoLabel->setText(tr("Invoked <b>Edit|Format|Italic</b>")); } void MainWindow::leftAlign() {     infoLabel->setText(tr("Invoked <b>Edit|Format|Left Align</b>")); } void MainWindow::rightAlign() {     infoLabel->setText(tr("Invoked <b>Edit|Format|Right Align</b>")); } void MainWindow::justify() {     infoLabel->setText(tr("Invoked <b>Edit|Format|Justify</b>")); } void MainWindow::center() {     infoLabel->setText(tr("Invoked <b>Edit|Format|Center</b>")); } void MainWindow::setLineSpacing() {     infoLabel->setText(tr("Invoked <b>Edit|Format|Set Line Spacing</b>")); } void MainWindow::setParagraphSpacing() {     infoLabel->setText(tr("Invoked <b>Edit|Format|Set Paragraph Spacing</b>")); } void MainWindow::about() {     infoLabel->setText(tr("Invoked <b>Help|About</b>"));     QMessageBox::about(this, tr("About Menu"),             tr("The <b>Menu</b> example shows how to create "                "menu-bar menus and context menus.")); } void MainWindow::aboutQt() {     infoLabel->setText(tr("Invoked <b>Help|About Qt</b>")); } void MainWindow::createActions() {     newAct = new QAction(tr("&New"), this);     newAct->setShortcuts(QKeySequence::New);     newAct->setStatusTip(tr("Create a new file"));     connect(newAct, SIGNAL(triggered()), this, SLOT(newFile()));     openAct = new QAction(tr("&Open..."), this);     openAct->setShortcuts(QKeySequence::Open);     openAct->setStatusTip(tr("Open an existing file"));     connect(openAct, SIGNAL(triggered()), this, SLOT(open()));     saveAct = new QAction(tr("&Save"), this);     saveAct->setShortcuts(QKeySequence::Save);     saveAct->setStatusTip(tr("Save the document to disk"));     connect(saveAct, SIGNAL(triggered()), this, SLOT(save()));     printAct = new QAction(tr("&Print..."), this);     printAct->setShortcuts(QKeySequence::Print);     printAct->setStatusTip(tr("Print the document"));     connect(printAct, SIGNAL(triggered()), this, SLOT(print()));     exitAct = new QAction(tr("E&xit"), this);     exitAct->setShortcut(tr("Ctrl+Q"));     exitAct->setStatusTip(tr("Exit the application"));     connect(exitAct, SIGNAL(triggered()), this, SLOT(close()));     undoAct = new QAction(tr("&Undo"), this);     undoAct->setShortcuts(QKeySequence::Undo);     undoAct->setStatusTip(tr("Undo the last operation"));     connect(undoAct, SIGNAL(triggered()), this, SLOT(undo()));     redoAct = new QAction(tr("&Redo"), this);     redoAct->setShortcuts(QKeySequence::Redo);     redoAct->setStatusTip(tr("Redo the last operation"));     connect(redoAct, SIGNAL(triggered()), this, SLOT(redo()));     cutAct = new QAction(tr("Cu&t"), this);     cutAct->setShortcuts(QKeySequence::Cut);     cutAct->setStatusTip(tr("Cut the current selection's contents to the "                             "clipboard"));     connect(cutAct, SIGNAL(triggered()), this, SLOT(cut()));     copyAct = new QAction(tr("&Copy"), this);     copyAct->setShortcut(tr("Ctrl+C"));     copyAct->setStatusTip(tr("Copy the current selection's contents to the "                              "clipboard"));     connect(copyAct, SIGNAL(triggered()), this, SLOT(copy()));     pasteAct = new QAction(tr("&Paste"), this);     pasteAct->setShortcuts(QKeySequence::Paste);     pasteAct->setStatusTip(tr("Paste the clipboard's contents into the current "                               "selection"));     connect(pasteAct, SIGNAL(triggered()), this, SLOT(paste()));     boldAct = new QAction(tr("&Bold"), this);     boldAct->setCheckable(true);     boldAct->setShortcut(tr("Ctrl+B"));     boldAct->setStatusTip(tr("Make the text bold"));     connect(boldAct, SIGNAL(triggered()), this, SLOT(bold()));     QFont boldFont = boldAct->font();     boldFont.setBold(true);     boldAct->setFont(boldFont);     italicAct = new QAction(tr("&Italic"), this);     italicAct->setCheckable(true);     italicAct->setShortcut(tr("Ctrl+I"));     italicAct->setStatusTip(tr("Make the text italic"));     connect(italicAct, SIGNAL(triggered()), this, SLOT(italic()));     QFont italicFont = italicAct->font();     italicFont.setItalic(true);     italicAct->setFont(italicFont);     setLineSpacingAct = new QAction(tr("Set &Line Spacing..."), this);     setLineSpacingAct->setStatusTip(tr("Change the gap between the lines of a "                                        "paragraph"));     connect(setLineSpacingAct, SIGNAL(triggered()), this, SLOT(setLineSpacing()));     setParagraphSpacingAct = new QAction(tr("Set &Paragraph Spacing..."), this);     setLineSpacingAct->setStatusTip(tr("Change the gap between paragraphs"));     connect(setParagraphSpacingAct, SIGNAL(triggered()),             this, SLOT(setParagraphSpacing()));     aboutAct = new QAction(tr("&About"), this);     aboutAct->setStatusTip(tr("Show the application's About box"));     connect(aboutAct, SIGNAL(triggered()), this, SLOT(about()));     aboutQtAct = new QAction(tr("About &Qt"), this);     aboutQtAct->setStatusTip(tr("Show the Qt library's About box"));     connect(aboutQtAct, SIGNAL(triggered()), qApp, SLOT(aboutQt()));     connect(aboutQtAct, SIGNAL(triggered()), this, SLOT(aboutQt()));     leftAlignAct = new QAction(tr("&Left Align"), this);     leftAlignAct->setCheckable(true);     leftAlignAct->setShortcut(tr("Ctrl+L"));     leftAlignAct->setStatusTip(tr("Left align the selected text"));     connect(leftAlignAct, SIGNAL(triggered()), this, SLOT(leftAlign()));     rightAlignAct = new QAction(tr("&Right Align"), this);     rightAlignAct->setCheckable(true);     rightAlignAct->setShortcut(tr("Ctrl+R"));     rightAlignAct->setStatusTip(tr("Right align the selected text"));     connect(rightAlignAct, SIGNAL(triggered()), this, SLOT(rightAlign()));     justifyAct = new QAction(tr("&Justify"), this);     justifyAct->setCheckable(true);     justifyAct->setShortcut(tr("Ctrl+J"));     justifyAct->setStatusTip(tr("Justify the selected text"));     connect(justifyAct, SIGNAL(triggered()), this, SLOT(justify()));     centerAct = new QAction(tr("&Center"), this);     centerAct->setCheckable(true);     centerAct->setShortcut(tr("Ctrl+E"));     centerAct->setStatusTip(tr("Center the selected text"));     connect(centerAct, SIGNAL(triggered()), this, SLOT(center()));       alignmentGroup = new QActionGroup(this);     alignmentGroup->addAction(leftAlignAct);     alignmentGroup->addAction(rightAlignAct);     alignmentGroup->addAction(justifyAct);     alignmentGroup->addAction(centerAct);     leftAlignAct->setChecked(true); } void MainWindow::createMenus() {       fileMenu = menuBar()->addMenu(tr("&File"));     fileMenu->addAction(newAct);     fileMenu->addAction(openAct);     fileMenu->addAction(saveAct);     fileMenu->addAction(printAct);     fileMenu->addSeparator();     fileMenu->addAction(exitAct);     editMenu = menuBar()->addMenu(tr("&Edit"));     editMenu->addAction(undoAct);     editMenu->addAction(redoAct);     editMenu->addSeparator();     editMenu->addAction(cutAct);     editMenu->addAction(copyAct);     editMenu->addAction(pasteAct);     editMenu->addSeparator();     helpMenu = menuBar()->addMenu(tr("&Help"));     helpMenu->addAction(aboutAct);     helpMenu->addAction(aboutQtAct);     formatMenu = editMenu->addMenu(tr("&Format"));     formatMenu->addAction(boldAct);     formatMenu->addAction(italicAct);     formatMenu->addSeparator()->setText(tr("Alignment"));     formatMenu->addAction(leftAlignAct);     formatMenu->addAction(rightAlignAct);     formatMenu->addAction(justifyAct);     formatMenu->addAction(centerAct);     formatMenu->addSeparator();     formatMenu->addAction(setLineSpacingAct);     formatMenu->addAction(setParagraphSpacingAct); } #include <QApplication> #include "mainwindow.h" int main(int argc, char *argv[]) {     QApplication app(argc, argv);     MainWindow window;     window.show();     return app.exec(); }