File indexing completed on 2024-05-12 17:09:56

0001 /*
0002     SPDX-FileCopyrightText: 2017 David Edmundson <davidedmundson@kde.org>
0003     SPDX-License-Identifier: LGPL-2.0-or-later
0004 */
0005 
0006 #include <QApplication>
0007 
0008 #include <QDateTime>
0009 #include <QDebug>
0010 #include <QIcon>
0011 #include <QMainWindow>
0012 #include <QMenuBar>
0013 
0014 class MainWindow : public QMainWindow
0015 {
0016 public:
0017     MainWindow();
0018 };
0019 
0020 MainWindow::MainWindow()
0021     : QMainWindow()
0022 {
0023     /*set an initial menu with the following
0024     Menu A
0025       - Item
0026       - Checkable Item
0027       - Item With Icon
0028       - A separator
0029       - Menu B
0030          - Item B1
0031      Menu C
0032       - DynamicItem ${timestamp}
0033 
0034       TopLevelItem
0035     */
0036 
0037     QAction *t;
0038     auto menuA = new QMenu("Menu A", this);
0039     menuA->addAction("Item");
0040 
0041     t = menuA->addAction("Checkable Item");
0042     t->setCheckable(true);
0043 
0044     t = menuA->addAction(QIcon::fromTheme("document-edit"), "Item with icon");
0045 
0046     menuA->addSeparator();
0047 
0048     auto menuB = new QMenu("Menu B", this);
0049     menuB->addAction("Item B1");
0050     menuA->addMenu(menuB);
0051 
0052     menuBar()->addMenu(menuA);
0053 
0054     auto menuC = new QMenu("Menu C", this);
0055     connect(menuC, &QMenu::aboutToShow, this, [menuC]() {
0056         menuC->clear();
0057         menuC->addAction("Dynamic Item " + QDateTime::currentDateTime().toString());
0058     });
0059 
0060     menuBar()->addMenu(menuC);
0061 
0062     menuBar()->addAction("Top Level Item");
0063 }
0064 
0065 int main(int argc, char **argv)
0066 {
0067     QApplication app(argc, argv);
0068     MainWindow mw;
0069     mw.show();
0070     return app.exec();
0071 }