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