Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qquicknativemenuitem_p.h
Go to the documentation of this file.
1// Copyright (C) 2023 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
5#ifndef QQUICKNATIVEMENUITEM_P_H
6#define QQUICKNATIVEMENUITEM_P_H
7
8//
9// W A R N I N G
10// -------------
11//
12// This file is not part of the Qt API. It exists purely as an
13// implementation detail. This header file may change from version to
14// version without notice, or even be removed.
15//
16// We mean it.
17//
18
19#include <QtCore/qobject.h>
20#include <QtQuickTemplates2/private/qtquicktemplates2global_p.h>
21#include <QtQuickTemplates2/private/qquickicon_p.h>
22
24
25class QQuickAction;
27class QQuickMenu;
28class QQuickMenuSeparator;
29class QPlatformMenuItem;
30
31class Q_QUICKTEMPLATES2_EXPORT QQuickNativeMenuItem : public QObject
32{
33 Q_OBJECT
34
35public:
36 static QQuickNativeMenuItem *createFromNonNativeItem(
37 QQuickMenu *parentMenu, QQuickItem *nonNativeItem);
38 ~QQuickNativeMenuItem();
39
40 QQuickAction *action() const;
41 QQuickMenu *subMenu() const;
42 QQuickMenuSeparator *separator() const;
43 QPlatformMenuItem *handle() const;
44 void sync();
45
46 QQuickIcon effectiveIcon() const;
47 QQuickNativeIconLoader *iconLoader() const;
48 void reloadIcon();
49
50 QString debugText() const;
51
52private Q_SLOTS:
53 void updateIcon();
54
55private:
56 enum class Type {
57 Unknown,
58 // It's an Action or a MenuItem with an Action.
59 Action,
60 // It's a MenuItem without an Action.
61 MenuItem,
62 Separator,
63 SubMenu
64 };
65
66 explicit QQuickNativeMenuItem(QQuickMenu *parentMenu, QQuickItem *nonNativeItem, Type type);
67
68 void addShortcut();
69 void removeShortcut();
70
71 QQuickMenu *m_parentMenu = nullptr;
72 QQuickItem *m_nonNativeItem = nullptr;
73 Type m_type = Type::Unknown;
74 mutable QQuickNativeIconLoader *m_iconLoader = nullptr;
75 std::unique_ptr<QPlatformMenuItem> m_handle = nullptr;
76 int m_shortcutId = -1;
77 bool m_syncing = false;
78};
79
80QT_END_NAMESPACE
81
82#endif // QQUICKNATIVEMENUITEM_P_H
QPalette defaultPalette() const override
void setSubMenu(QQuickMenu *subMenu)
void executeArrow(bool complete=false)
QPointer< QQuickMenu > subMenu
QQuickDeferredPointer< QQuickItem > arrow
bool acceptKeyClick(Qt::Key key) const override
QQuickMenuPositioner(QQuickMenu *menu)
void reposition() override
static const QQuickPopup::ClosePolicy cascadingSubMenuClosePolicy
Menu popup that can be used as a context menu or popup menu.
static QQuickItem * findParentMenuItem(QQuickMenu *subMenu)
static bool shouldCascade()
static QWindow * effectiveWindow(QWindow *window, QPoint *offset)
QString nativeMenuItemListToString(const QList< QQuickNativeMenuItem * > &nativeItems)