diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/manual/cocoa/menus/main.cpp | 201 | ||||
-rw-r--r-- | tests/manual/cocoa/menus/menus.pro | 5 |
2 files changed, 206 insertions, 0 deletions
diff --git a/tests/manual/cocoa/menus/main.cpp b/tests/manual/cocoa/menus/main.cpp new file mode 100644 index 0000000000..d695c6c138 --- /dev/null +++ b/tests/manual/cocoa/menus/main.cpp @@ -0,0 +1,201 @@ +/**************************************************************************** +** +** Copyright (C) 2012 KDAB +** Contact: http://www.qt-project.org/ +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** 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. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtGui> +#include <QtWidgets> + + +class Responder : public QObject +{ + Q_OBJECT + +public: + Responder(QObject *pr) : + QObject(pr) + { + } + +public slots: + + + void toggleChecked(bool b) + { + QAction *a = qobject_cast<QAction *>(sender()); + } + + void showModalDialog() + { + QMessageBox::information(NULL, "Something", "Something happened. Modally."); + } + + void doPreferences() + { + qDebug() << "show preferences"; + } + + void aboutToShowSubmenu() + { + QMenu* m = (QMenu*) sender(); + qDebug() << "will show" << m; + + m->clear(); + + for (int i=0; i<10; ++i) { + m->addAction(QString("Recent File %1").arg(i + 1)); + } + } +}; + +void createWindow1() +{ + + QMainWindow *window = new QMainWindow; + QMenu *menu = new QMenu("TestMenu", window); + + window->menuBar()->addMenu(menu); + + Responder *r = new Responder(window); + + QAction *a = menu->addAction("TestMenuItem1"); + a->setShortcut( Qt::Key_A | Qt::SHIFT | Qt::CTRL ); + QObject::connect(a, SIGNAL(triggered()), + r, SLOT(showModalDialog())); + + + menu->addAction("T&estMenuItem2"); + a = menu->addAction("Preferences"); + a->setMenuRole(QAction::PreferencesRole); + QObject::connect(a, SIGNAL(triggered()), + r, SLOT(doPreferences())); + + a = menu->addAction("TestMenuItem4"); + a->setShortcut( Qt::Key_W | Qt::CTRL); + + QMenu *menu2 = new QMenu("SecondMenu", window); + window->menuBar()->addMenu(menu2); + + menu2->addAction("Yellow"); + a = menu2->addAction("Mau&ve"); + + QFont f; + f.setPointSize(9); + a->setFont(f); + + menu2->addAction("Taupe"); + + QMenu *submenu1 = new QMenu("Submenu", window); + submenu1->addAction("Sub Item 1"); + submenu1->addAction("Sub Item 2"); + submenu1->addAction("Sub Item 3"); + menu2->addMenu(submenu1); + + QMenu *submenu2 = new QMenu("Deeper", window); + submenu2->addAction("Sub Sub Item 1"); + submenu2->addAction("Sub Sub Item 2"); + submenu2->addAction("Sub Sub Item 3"); + submenu1->addMenu(submenu2); + + QMenu *menu3 = new QMenu("A Third Menu", window); + + menu3->addAction("Eins"); + + QMenu *submenu3 = new QMenu("Dynamic", window); + QObject::connect(submenu3, SIGNAL(aboutToShow()), r, SLOT(aboutToShowSubmenu())); + menu3->addMenu(submenu3); + + a = menu3->addAction("Zwei"); + a->setShortcut( Qt::Key_3 | Qt::ALT); + a = menu3->addAction("About Drei..."); + a->setMenuRole(QAction::AboutRole); + + window->menuBar()->addMenu(menu3); + + QAction *checkableAction = new QAction("Thing Enabled", window); + checkableAction->setCheckable(true); + checkableAction->setChecked(true); + QObject::connect(checkableAction, SIGNAL(triggered(bool)), + r, SLOT(toggleChecked(bool))); + + menu2->addAction(checkableAction); + + window->show(); + +} + +void createWindow2() +{ + QMainWindow *window = new QMainWindow; + QMenu *menu = new QMenu("Nuts", window); + + window->menuBar()->addMenu(menu); + + menu->addAction("Peanuts"); + menu->addAction("Walnuts"); + + QMenu *menu2 = new QMenu("Colours", window); + window->menuBar()->addMenu(menu2); + + menu2->addAction("Pink"); + menu2->addAction("Yellow"); + menu2->addAction("Grape"); + + QMenu *menu3 = new QMenu("Edit", window); + menu3->addAction("Cut"); + menu3->addAction("Copy boring way"); + menu3->addAction("Copy awesomely"); + menu3->addAction("Paste"); + + window->menuBar()->addMenu(menu3); + window->show(); +} + +int main(int argc, char **argv) { + QApplication app(argc, argv); + + app.setApplicationName("Banana"); + + createWindow1(); + createWindow2(); + + return app.exec(); +} + +#include "main.moc" diff --git a/tests/manual/cocoa/menus/menus.pro b/tests/manual/cocoa/menus/menus.pro new file mode 100644 index 0000000000..0ccb25feb9 --- /dev/null +++ b/tests/manual/cocoa/menus/menus.pro @@ -0,0 +1,5 @@ +TEMPLATE = app + +SOURCES += main.cpp +QT += gui widgets +CONFIG -=app_bundle |