Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qgtk3menu.h
Go to the documentation of this file.
1// Copyright (C) 2017 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
4#ifndef QGTK3MENU_H
5#define QGTK3MENU_H
6
7#include <QtGui/qpa/qplatformmenu.h>
8
9typedef struct _GtkWidget GtkWidget;
10typedef struct _GtkMenuItem GtkMenuItem;
11typedef struct _GtkCheckMenuItem GtkCheckMenuItem;
12
14
15class QGtk3Menu;
16
18{
19public:
22
23 bool isInvalid() const;
24
26 GtkWidget *handle() const;
27
28 QString text() const;
29 void setText(const QString &text) override;
30
31 QGtk3Menu *menu() const;
32 void setMenu(QPlatformMenu *menu) override;
33
34 bool isVisible() const;
35 void setVisible(bool visible) override;
36
37 bool isSeparator() const;
38 void setIsSeparator(bool separator) override;
39
40 bool isCheckable() const;
41 void setCheckable(bool checkable) override;
42
43 bool isChecked() const;
44 void setChecked(bool checked) override;
45
46#if QT_CONFIG(shortcut)
47 QKeySequence shortcut() const;
48 void setShortcut(const QKeySequence &shortcut) override;
49#endif
50
51 bool isEnabled() const;
52 void setEnabled(bool enabled) override;
53
54 bool hasExclusiveGroup() const;
55 void setHasExclusiveGroup(bool exclusive) override;
56
57 void setRole(MenuRole role) override { Q_UNUSED(role); }
58 void setFont(const QFont &font) override { Q_UNUSED(font); }
59 void setIcon(const QIcon &icon) override { Q_UNUSED(icon); }
60 void setIconSize(int size) override { Q_UNUSED(size); }
61
62protected:
63 static void onSelect(GtkMenuItem *item, void *data);
64 static void onActivate(GtkMenuItem *item, void *data);
65 static void onToggle(GtkCheckMenuItem *item, void *data);
66
67private:
68 bool m_visible;
69 bool m_separator;
70 bool m_checkable;
71 bool m_checked;
72 bool m_enabled;
73 bool m_exclusive;
74 bool m_underline;
75 bool m_invalid;
76 QGtk3Menu *m_menu;
77 GtkWidget *m_item;
78 QString m_text;
79#if QT_CONFIG(shortcut)
80 QKeySequence m_shortcut;
81#endif
82};
83
85{
87
88public:
89 QGtk3Menu();
90 ~QGtk3Menu();
91
92 GtkWidget *handle() const;
93
96 void syncMenuItem(QPlatformMenuItem *item) override;
97 void syncSeparatorsCollapsible(bool enable) override;
98
99 void setEnabled(bool enabled) override;
100 void setVisible(bool visible) override;
101
102 void setIcon(const QIcon &icon) override { Q_UNUSED(icon); }
103 void setText(const QString &text) override { Q_UNUSED(text); }
104
105 QPoint targetPos() const;
106
107 void showPopup(const QWindow *parentWindow, const QRect &targetRect, const QPlatformMenuItem *item) override;
108 void dismiss() override;
109
110 QPlatformMenuItem *menuItemAt(int position) const override;
112
113 QPlatformMenuItem *createMenuItem() const override;
114 QPlatformMenu *createSubMenu() const override;
115
116protected:
117 static void onShow(GtkWidget *menu, void *data);
118 static void onHide(GtkWidget *menu, void *data);
119
120private:
121 GtkWidget *m_menu;
122 QPoint m_targetPos;
123 QList<QGtk3MenuItem *> m_items;
124};
125
127
128#endif // QGTK3MENU_H
\reentrant
Definition qfont.h:22
void setMenu(QPlatformMenu *menu) override
void setFont(const QFont &font) override
Definition qgtk3menu.h:58
void setText(const QString &text) override
void setHasExclusiveGroup(bool exclusive) override
static void onToggle(GtkCheckMenuItem *item, void *data)
static void onSelect(GtkMenuItem *item, void *data)
bool isEnabled() const
bool hasExclusiveGroup() const
bool isCheckable() const
void setIcon(const QIcon &icon) override
Definition qgtk3menu.h:59
bool isSeparator() const
QString text() const
void setRole(MenuRole role) override
Definition qgtk3menu.h:57
void setVisible(bool visible) override
void setEnabled(bool enabled) override
void setIconSize(int size) override
Definition qgtk3menu.h:60
void setChecked(bool checked) override
static void onActivate(GtkMenuItem *item, void *data)
GtkWidget * handle() const
bool isInvalid() const
Definition qgtk3menu.cpp:64
void setCheckable(bool checkable) override
bool isChecked() const
void setIsSeparator(bool separator) override
bool isVisible() const
QGtk3Menu * menu() const
GtkWidget * create()
Definition qgtk3menu.cpp:69
void insertMenuItem(QPlatformMenuItem *item, QPlatformMenuItem *before) override
QPoint targetPos() const
QPlatformMenuItem * menuItemAt(int position) const override
void syncSeparatorsCollapsible(bool enable) override
QPlatformMenuItem * menuItemForTag(quintptr tag) const override
void dismiss() override
void syncMenuItem(QPlatformMenuItem *item) override
void showPopup(const QWindow *parentWindow, const QRect &targetRect, const QPlatformMenuItem *item) override
void setVisible(bool visible) override
void setIcon(const QIcon &icon) override
Definition qgtk3menu.h:102
QPlatformMenuItem * createMenuItem() const override
GtkWidget * handle() const
void setText(const QString &text) override
Definition qgtk3menu.h:103
void setEnabled(bool enabled) override
static void onHide(GtkWidget *menu, void *data)
void removeMenuItem(QPlatformMenuItem *item) override
static void onShow(GtkWidget *menu, void *data)
QPlatformMenu * createSubMenu() const override
The QIcon class provides scalable icons in different modes and states.
Definition qicon.h:20
The QKeySequence class encapsulates a key sequence as used by shortcuts.
virtual quintptr tag() const
\inmodule QtCore\reentrant
Definition qpoint.h:25
\inmodule QtCore\reentrant
Definition qrect.h:30
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
\inmodule QtGui
Definition qwindow.h:63
QString text
Combined button and popup list for selecting options.
struct _GtkWidget GtkWidget
struct _GtkWidget GtkWidget
Definition qgtk3menu.h:9
struct _GtkMenuItem GtkMenuItem
Definition qgtk3menu.h:10
struct _GtkCheckMenuItem GtkCheckMenuItem
Definition qgtk3menu.h:11
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLenum GLenum GLsizei const GLuint GLboolean enabled
GLboolean enable
static qreal position(const QQuickItem *item, QQuickAnchors::Anchor anchorLine)
#define Q_OBJECT
#define Q_UNUSED(x)
size_t quintptr
Definition qtypes.h:167
QGraphicsItem * item
button setShortcut(tr("Alt+F7"))
QMenu menu
[5]