1 /****************************************************************************
2 **
3 ** Copyright (C) 2015 The Qt Company Ltd.
4 ** Contact: http://www.qt.io/licensing/
5 **
6 ** This file is part of the examples of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:BSD$
9 ** You may use this file under the terms of the BSD license as follows:
10 **
11 ** "Redistribution and use in source and binary forms, with or without
12 ** modification, are permitted provided that the following conditions are
13 ** met:
14 **   * Redistributions of source code must retain the above copyright
15 **     notice, this list of conditions and the following disclaimer.
16 **   * Redistributions in binary form must reproduce the above copyright
17 **     notice, this list of conditions and the following disclaimer in
18 **     the documentation and/or other materials provided with the
19 **     distribution.
20 **   * Neither the name of The Qt Company Ltd nor the names of its
21 **     contributors may be used to endorse or promote products derived
22 **     from this software without specific prior written permission.
23 **
24 **
25 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27 ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28 ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
29 ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30 ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31 ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32 ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33 ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
36 **
37 ** $QT_END_LICENSE$
38 **
39 ****************************************************************************/
40 
41 #include "menus.h"
42 #include <QAction>
43 #include <QAxFactory>
44 #include <QMenuBar>
45 #include <QMessageBox>
46 #include <QTextEdit>
47 #include <QPixmap>
48 
49 #include "fileopen.xpm"
50 #include "filesave.xpm"
51 
QMenus(QWidget * parent)52 QMenus::QMenus(QWidget *parent)
53     : QMainWindow(parent, 0) // QMainWindow's default flag is WType_TopLevel
54 {
55     QAction *action;
56 
57     QMenu *file = new QMenu(this);
58 
59     action = new QAction(QPixmap((const char**)fileopen), "&Open", this);
60     action->setShortcut(tr("CTRL+O"));
61     connect(action, SIGNAL(triggered()), this, SLOT(fileOpen()));
62     file->addAction(action);
63 
64     action = new QAction(QPixmap((const char**)filesave),"&Save", this);
65     action->setShortcut(tr("CTRL+S"));
66     connect(action, SIGNAL(triggered()), this, SLOT(fileSave()));
67     file->addAction(action);
68 
69     QMenu *edit = new QMenu(this);
70 
71     action = new QAction("&Normal", this);
72     action->setShortcut(tr("CTRL+N"));
73     action->setToolTip("Normal");
74     action->setStatusTip("Toggles Normal");
75     action->setCheckable(true);
76     connect(action, SIGNAL(triggered()), this, SLOT(editNormal()));
77     edit->addAction(action);
78 
79     action = new QAction("&Bold", this);
80     action->setShortcut(tr("CTRL+B"));
81     action->setCheckable(true);
82     connect(action, SIGNAL(triggered()), this, SLOT(editBold()));
83     edit->addAction(action);
84 
85     action = new QAction("&Underline", this);
86     action->setShortcut(tr("CTRL+U"));
87     action->setCheckable(true);
88     connect(action, SIGNAL(triggered()), this, SLOT(editUnderline()));
89     edit->addAction(action);
90 
91     QMenu *advanced = new QMenu(this);
92     action = new QAction("&Font...", this);
93     connect(action, SIGNAL(triggered()), this, SLOT(editAdvancedFont()));
94     advanced->addAction(action);
95 
96     action = new QAction("&Style...", this);
97     connect(action, SIGNAL(triggered()), this, SLOT(editAdvancedStyle()));
98     advanced->addAction(action);
99 
100     edit->addMenu(advanced)->setText("&Advanced");
101 
102     edit->addSeparator();
103 
104     action = new QAction("Una&vailable", this);
105     action->setShortcut(tr("CTRL+V"));
106     action->setCheckable(true);
107     action->setEnabled(false);
108     connect(action, SIGNAL(triggered()), this, SLOT(editUnderline()));
109     edit->addAction(action);
110 
111     QMenu *help = new QMenu(this);
112 
113     action = new QAction("&About...", this);
114     action->setShortcut(tr("F1"));
115     connect(action, SIGNAL(triggered()), this, SLOT(helpAbout()));
116     help->addAction(action);
117 
118     action = new QAction("&About Qt...", this);
119     connect(action, SIGNAL(triggered()), this, SLOT(helpAboutQt()));
120     help->addAction(action);
121 
122     if (!QAxFactory::isServer())
123         menuBar()->addMenu(file)->setText("&File");
124     menuBar()->addMenu(edit)->setText("&Edit");
125     menuBar()->addMenu(help)->setText("&Help");
126 
127     editor = new QTextEdit(this);
128     setCentralWidget(editor);
129 
130     statusBar();
131 }
132 
fileOpen()133 void QMenus::fileOpen()
134 {
135     editor->append("File Open selected.");
136 }
137 
fileSave()138 void QMenus::fileSave()
139 {
140     editor->append("File Save selected.");
141 }
142 
editNormal()143 void QMenus::editNormal()
144 {
145     editor->append("Edit Normal selected.");
146 }
147 
editBold()148 void QMenus::editBold()
149 {
150     editor->append("Edit Bold selected.");
151 }
152 
editUnderline()153 void QMenus::editUnderline()
154 {
155     editor->append("Edit Underline selected.");
156 }
157 
editAdvancedFont()158 void QMenus::editAdvancedFont()
159 {
160     editor->append("Edit Advanced Font selected.");
161 }
162 
editAdvancedStyle()163 void QMenus::editAdvancedStyle()
164 {
165     editor->append("Edit Advanced Style selected.");
166 }
167 
helpAbout()168 void QMenus::helpAbout()
169 {
170     QMessageBox::about(this, "About QMenus",
171 			"This example implements an in-place ActiveX control with menus and status messages.");
172 }
173 
helpAboutQt()174 void QMenus::helpAboutQt()
175 {
176     QMessageBox::aboutQt(this);
177 }
178