summaryrefslogtreecommitdiffstats
path: root/tests/manual/cocoa/popups/main.cpp
blob: 7c28795cabdbf0c5382f31e800a78304f374bb00 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only

#include <QtWidgets>

class Window : public QWidget
{
    Q_OBJECT

public:
    Window();

public slots:
   void triggered(QAction*);
   void clean();
   void showPoppWindow();

private:
    QLabel *explanation;
   QToolButton *toolButton;
   QMenu *menu;
   QLineEdit *echo;
   QComboBox *comboBox;
   QPushButton *pushButton;
};

Window::Window()
{
   QGroupBox* group = new QGroupBox(tr("test the popup"));

   explanation = new QLabel(
       "This test is used to verify that popup windows will be closed "
       "as expected. This includes when clicking outside the popup or moving the "
       "parent window. Tested popups include context menus, combo box popups, tooltips "
       "and QWindow with Qt::Popup set."
   );
   explanation->setWordWrap(true);
   explanation->setToolTip("I'm a tool tip!");

   menu = new QMenu(group);
   menu->addAction(tr("line one"));
   menu->addAction(tr("line two"));
   menu->addAction(tr("line three"));
   menu->addAction(tr("line four"));
   menu->addAction(tr("line five"));

   QMenu *subMenu1 = new QMenu();
   subMenu1->addAction("1");
   subMenu1->addAction("2");
   subMenu1->addAction("3");
   menu->addMenu(subMenu1);

   QMenu *subMenu2 = new QMenu();
   subMenu2->addAction("2 1");
   subMenu2->addAction("2 2");
   subMenu2->addAction("2 3");
   menu->addMenu(subMenu2);

   toolButton = new QToolButton(group);
   toolButton->setMenu(menu);
   toolButton->setPopupMode( QToolButton::MenuButtonPopup );
   toolButton->setText("select me");

   echo = new QLineEdit(group);
   echo->setPlaceholderText("not triggered");

   connect(menu, SIGNAL(triggered(QAction*)), this, SLOT(triggered(QAction*)));
   connect(menu, SIGNAL(aboutToShow()), this, SLOT(clean()));

   comboBox = new QComboBox();
   comboBox->addItem("Item 1");
   comboBox->addItem("Item 2");
   comboBox->addItem("Item 3");

   pushButton = new QPushButton("Show popup window");
   connect(pushButton, SIGNAL(clicked()), this, SLOT(showPoppWindow()));

   QVBoxLayout* layout = new QVBoxLayout;
   layout->addWidget(explanation);
   layout->addWidget(toolButton);
   layout->addWidget(echo);
   layout->addWidget(comboBox);
   layout->addWidget(pushButton);

   group ->setLayout(layout);
   setLayout(layout);
   setWindowTitle(tr("Popup Window Testing"));
}

void Window::clean()
{
   echo->setText("");
}

void Window::showPoppWindow()
{
    QWindow *window = new QWindow();
    window->setTransientParent(this->windowHandle());
    window->setPosition(this->pos());
    window->setWidth(100);
    window->setHeight(100);
    window->setFlags(Qt::Window | Qt::Popup);
    window->show();
}

void Window::triggered(QAction* act)
{
   if (!act)
       return;
   echo->setText(act->text());
}

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    Window window;
    window.show();
    return app.exec();
}

#include "main.moc"