1 | // SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. |
---|---|
2 | // |
3 | // SPDX-License-Identifier: GPL-3.0-or-later |
4 | |
5 | #include "abstractmenubar.h" |
6 | #include "abstractmenu.h" |
7 | #include "abstractaction.h" |
8 | |
9 | #include <QMenuBar> |
10 | #include <QDebug> |
11 | |
12 | class AbstractMenuBarPrivate |
13 | { |
14 | friend class AbstractMenuBar; |
15 | QMenuBar *menuBar; |
16 | }; |
17 | |
18 | AbstractMenuBar::~AbstractMenuBar() |
19 | { |
20 | if (d) { |
21 | delete d; |
22 | } |
23 | } |
24 | |
25 | void *AbstractMenuBar::qMenuBar() |
26 | { |
27 | return d->menuBar; |
28 | } |
29 | |
30 | AbstractMenuBar::AbstractMenuBar(void *qMenuBar) |
31 | : d(new AbstractMenuBarPrivate()) |
32 | { |
33 | if (!qMenuBar) { |
34 | qCritical() << "Failed, use QMenuBar(0x0) to AbstractMenuBar"; |
35 | abort(); |
36 | } |
37 | |
38 | d->menuBar = static_cast<QMenuBar*>(qMenuBar); |
39 | QMenuBar::connect(d->menuBar, &QMenuBar::destroyed, |
40 | d->menuBar, [this]() { |
41 | delete this; |
42 | }, Qt::UniqueConnection); |
43 | } |
44 |