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
qmenu_p.h
Go to the documentation of this file.
1// Copyright (C) 2016 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 QMENU_P_H
5#define QMENU_P_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <QtWidgets/private/qtwidgetsglobal_p.h>
19#include "QtWidgets/qmenu.h"
20#if QT_CONFIG(menubar)
21#include "QtWidgets/qmenubar.h"
22#endif
23#include "QtWidgets/qstyleoption.h"
24#include "QtCore/qdatetime.h"
25#include "QtCore/qmap.h"
26#include "QtCore/qhash.h"
27#include "QtCore/qbasictimer.h"
28#include "private/qwidget_p.h"
29
30#include <qpa/qplatformmenu.h>
31
32#include <QtCore/qpointer.h>
33
34#include <functional>
35
37
39
40static inline int pick(Qt::Orientation o, const QPoint &pos)
41{ return o == Qt::Horizontal ? pos.x() : pos.y(); }
42
43static inline int pick(Qt::Orientation o, const QSize &size)
44{ return o == Qt::Horizontal ? size.width() : size.height(); }
45
46static inline int &rpick(Qt::Orientation o, QPoint &pos)
47{ return o == Qt::Horizontal ? pos.rx() : pos.ry(); }
48
49static inline int &rpick(Qt::Orientation o, QSize &size)
50{ return o == Qt::Horizontal ? size.rwidth() : size.rheight(); }
51
54
55static inline int perp(Qt::Orientation o, const QPoint &pos)
56{ return o == Qt::Vertical ? pos.x() : pos.y(); }
57
58static inline int perp(Qt::Orientation o, const QSize &size)
59{ return o == Qt::Vertical ? size.width() : size.height(); }
60
61static inline int &rperp(Qt::Orientation o, QPoint &pos)
62{ return o == Qt::Vertical ? pos.rx() : pos.ry(); }
63
64static inline int &rperp(Qt::Orientation o, QSize &size)
65{ return o == Qt::Vertical ? size.rwidth() : size.rheight(); }
66
67static inline int pick(Qt::Orientation o, const QMargins &m)
68{ return o == Qt::Horizontal ? (m.left() + m.right()) : (m.top() + m.bottom()); }
69
70static inline int perp(Qt::Orientation o, const QMargins &m)
71{ return o == Qt::Vertical ? (m.left() + m.right()) : (m.top() + m.bottom()); }
72
73class QTornOffMenu;
74class QEventLoop;
75
76template <typename T>
78{
79public:
81 : toSet(toSet)
82 , value(value)
83 { }
84
86private:
87 T &toSet;
88 T value;
89};
90
92{
93 Q_DISABLE_COPY_MOVE(QMenuSloppyState)
94public:
96 : m_enabled(false)
97 , m_uni_directional(false)
98 , m_select_other_actions(false)
99 , m_use_reset_action(true)
100 { }
101
103
105 {
106 m_menu = menu;
107 m_uni_directional = menu->style()->styleHint(QStyle::SH_Menu_SubMenuUniDirection, nullptr, menu);
108 m_uni_dir_fail_at_count = short(menu->style()->styleHint(QStyle::SH_Menu_SubMenuUniDirectionFailCount, nullptr, menu));
109 m_select_other_actions = menu->style()->styleHint(QStyle::SH_Menu_SubMenuSloppySelectOtherActions, nullptr , menu);
111 m_discard_state_when_entering_parent = menu->style()->styleHint(QStyle::SH_Menu_SubMenuResetWhenReenteringParent);
112 m_dont_start_time_on_leave = menu->style()->styleHint(QStyle::SH_Menu_SubMenuDontStartSloppyOnLeave);
113 reset();
114 }
115
116 void reset();
117 bool enabled() const { return m_enabled; }
118
124
126 {
127 if (m_enabled)
128 m_time.start(m_timeout, m_menu);
129 }
130
132 {
133 if (!m_time.isActive())
134 startTimer();
135 }
136
138 {
139 m_time.stop();
140 }
141
142 void enter();
143 void childEnter();
144
145 void leave();
146 void childLeave();
147
148 static qreal slope(const QPointF &p1, const QPointF &p2)
149 {
150 const QPointF slope = p2 - p1;
151 if (qFuzzyIsNull(slope.x()))
152 return 9999;
153 return slope.y() / slope.x();
154 }
155
156 bool checkSlope(qreal oldS, qreal newS, bool wantSteeper)
157 {
158 if (wantSteeper)
159 return oldS <= newS;
160 return newS <= oldS;
161 }
162
163 MouseEventResult processMouseEvent(const QPointF &mousePos, QAction *resetAction, QAction *currentAction)
164 {
165 if (m_parent)
166 m_parent->stopTimer();
167
168 if (!m_enabled)
170
172
173 if (!m_sub_menu) {
174 reset();
176 }
177
178 QSetValueOnDestroy<bool> setFirstMouse(m_first_mouse, false);
179 QSetValueOnDestroy<QPointF> setPreviousPoint(m_previous_point, mousePos);
180
181 if (resetAction && resetAction->isSeparator()) {
182 m_reset_action = nullptr;
183 m_use_reset_action = true;
184 } else if (m_reset_action != resetAction) {
185 if (m_use_reset_action && resetAction) {
186 const QList<QAction *> actions = m_menu->actions();
187 const int resetIdx = actions.indexOf(resetAction);
188 const int originIdx = actions.indexOf(m_origin_action);
189 if (resetIdx > -1 && originIdx > -1 && qAbs(resetIdx - originIdx) > 1)
190 m_use_reset_action = false;
191 }
192 m_reset_action = resetAction;
193 }
194
195 if (m_action_rect.contains(mousePos)) {
196 startTimer();
197 return currentAction == m_menu->menuAction() ? EventIsProcessed : EventShouldBePropagated;
198 }
199
200 if (m_uni_directional && !m_first_mouse && resetAction != m_origin_action) {
201 bool left_to_right = m_menu->layoutDirection() == Qt::LeftToRight;
202 QRect sub_menu_rect = m_sub_menu->geometry();
203 QPoint sub_menu_top =
204 left_to_right? sub_menu_rect.topLeft() : sub_menu_rect.topRight();
205 QPoint sub_menu_bottom =
206 left_to_right? sub_menu_rect.bottomLeft() : sub_menu_rect.bottomRight();
207 qreal prev_slope_top = slope(m_previous_point, sub_menu_top);
208 qreal prev_slope_bottom = slope(m_previous_point, sub_menu_bottom);
209
210 qreal current_slope_top = slope(mousePos, sub_menu_top);
211 qreal current_slope_bottom = slope(mousePos, sub_menu_bottom);
212
213 bool slopeTop = checkSlope(prev_slope_top, current_slope_top, sub_menu_top.y() < mousePos.y());
214 bool slopeBottom = checkSlope(prev_slope_bottom, current_slope_bottom, sub_menu_bottom.y() > mousePos.y());
215 bool rightDirection = false;
216 int mouseDir = int(m_previous_point.y() - mousePos.y());
217 if (mouseDir >= 0) {
218 rightDirection = rightDirection || slopeTop;
219 }
220 if (mouseDir <= 0) {
221 rightDirection = rightDirection || slopeBottom;
222 }
223
224 if (m_uni_dir_discarded_count >= m_uni_dir_fail_at_count && !rightDirection) {
225 m_uni_dir_discarded_count = 0;
227 }
228
229 if (!rightDirection)
230 m_uni_dir_discarded_count++;
231 else
232 m_uni_dir_discarded_count = 0;
233
234 }
235
236 return m_select_other_actions ? EventShouldBePropagated : EventIsProcessed;
237 }
238
239 void setSubMenuPopup(const QRect &actionRect, QAction *resetAction, QMenu *subMenu);
240 bool hasParentActiveDelayTimer() const;
241 void timeout();
242 int timeForTimeout() const { return m_timeout; }
243
244 bool isTimerId(int timerId) const { return m_time.timerId() == timerId; }
245 QMenu *subMenu() const { return m_sub_menu; }
246
247private:
248 QMenu *m_menu = nullptr;
249 QAction *m_reset_action = nullptr;
250 QAction *m_origin_action = nullptr;
251 QRectF m_action_rect;
252 QPointF m_previous_point;
253 QPointer<QMenu> m_sub_menu;
254 QMenuSloppyState *m_parent = nullptr;
255 QBasicTimer m_time;
256 short m_uni_dir_discarded_count = 0;
257 short m_uni_dir_fail_at_count = 0;
258 short m_timeout = 0;
259 bool m_init_guard = false;
260 bool m_first_mouse = true;
261
262 bool m_enabled : 1;
263 bool m_uni_directional : 1;
264 bool m_select_other_actions : 1;
265 bool m_discard_state_when_entering_parent : 1;
266 bool m_dont_start_time_on_leave : 1;
267 bool m_use_reset_action : 1;
268};
269
271{
272 Q_DECLARE_PUBLIC(QMenu)
273public:
274 using PositionFunction = std::function<QPoint(const QSize &)>;
275
291
293 {
294 delete scroll;
296 delete platformMenu.data();
297 }
298 void init();
301 void syncPlatformMenu();
304
305#ifdef Q_OS_MACOS
306 void moveWidgetToPlatformItem(QWidget *w, QPlatformMenuItem* item);
307#endif
308
309 static QMenuPrivate *get(QMenu *m) { return m->d_func(); }
310 int scrollerHeight() const;
311
312 bool isContextMenu() const;
313
314 //item calculations
315 QRect actionRect(QAction *) const;
316
317 mutable QList<QRect> actionRects;
318 mutable QHash<QAction *, QWidget *> widgetItems;
319 void updateActionRects() const;
320 void updateActionRects(const QRect &screen) const;
321 QRect popupGeometry(QScreen *screen = nullptr) const;
322 bool useFullScreenForPopup() const;
323 int getLastVisibleAction() const;
324 void popup(const QPoint &p, QAction *atAction, PositionFunction positionFunction = {});
325 QAction *exec(const QPoint &p, QAction *action, PositionFunction positionFunction = {});
326
327 //selection
330
332#ifdef QT_KEYPAD_NAVIGATION
333 QAction *selectAction = nullptr;
334 QAction *cancelAction = nullptr;
335#endif
336 struct DelayState {
338 { }
340 {
341 this->parent = parent;
342 }
343
344 void start(int timeout, QAction *toStartAction)
345 {
346 if (timer.isActive() && toStartAction == action)
347 return;
348 action = toStartAction;
350 }
351 void stop()
352 {
353 action = nullptr;
354 timer.stop();
355 }
356
357 QMenu *parent = nullptr;
358 QAction *action = nullptr;
365 QWidget *topCausedWidget() const;
366 QAction *actionAt(QPoint p) const;
368 void setCurrentAction(QAction *, int popup = -1, SelectionReason reason = SelectedFromElsewhere, bool activateFirst = false);
369 void popupAction(QAction *, int, bool);
370 void setSyncAction();
371
372 //scrolling support
384 void scrollMenu(QMenuScroller::ScrollLocation location, bool active=false);
385 void scrollMenu(QMenuScroller::ScrollDirection direction, bool page=false, bool active=false);
386 void scrollMenu(QAction *action, QMenuScroller::ScrollLocation location, bool active=false);
387
388 //synchronous operation (ie exec())
390 QPointer<QAction> syncAction;
391
392 //search buffer
395
396 //passing of mouse events up the parent hierarchy
397 QPointer<QMenu> activeMenu;
399
400 //used to walk up the popup list
401 struct QMenuCaused {
402 QPointer<QWidget> widget;
403 QPointer<QAction> action;
404 };
405 virtual QList<QPointer<QWidget>> calcCausedStack() const;
407 void hideUpToMenuBar();
408 void hideMenu(QMenu *menu);
410
411 //index mappings
412 inline QAction *actionAt(int i) const { return q_func()->actions().at(i); }
413 inline int indexOf(QAction *act) const { return q_func()->actions().indexOf(act); }
414
415 //tear off support
416 QPointer<QTornOffMenu> tornPopup;
417
419
420 //default action
421 QPointer<QAction> defaultAction;
422
423 QAction *menuAction = nullptr;
425
428
429 //firing of events
430 void activateAction(QAction *, QAction::ActionEvent, bool self=true);
431 void activateCausedStack(const QList<QPointer<QWidget>> &, QAction *, QAction::ActionEvent,
432 bool);
433
434 void _q_actionTriggered();
435 void _q_actionHovered();
437
438 bool hasMouseMoved(const QPoint &globalPos);
439
441
442 QPointer<QPlatformMenu> platformMenu;
443
444 QPointer<QAction> actionAboutToTrigger;
445
446 QPointer<QWidget> noReplayFor;
447
449 public:
452 QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());
453 void paintEvent(QPaintEvent *e) override;
454 void updateScrollerRects(const QRect &rect);
455
456 private:
457 QMenuPrivate *menuPrivate;
458 Type scrollType;
459 };
462
464 void drawTearOff(QPainter *painter, const QRect &rect);
465 QRect rect() const;
466
467 mutable uint maxIconWidth = 0;
468 mutable uint tabWidth = 0;
469 int motions = 0;
471
473
474 mutable quint8 ncols = 0; // "255cols ought to be enough for anybody."
475
476 // Contains the screen of the popup point during popup(QPoint).
477 // This is to make sure the screen is remembered,
478 // when the menu contains many items on multiple screens
479 QPointer<QScreen> popupScreen;
480
481 mutable bool itemsDirty : 1;
482 mutable bool hasCheckableItems : 1;
488 // Selection
489 bool hasHadMouse : 1;
490 bool aboutToHide : 1;
491 // Tear-off menus
492 bool tearoff : 1;
493 bool tornoff : 1;
495 //menu fading/scrolling effects
497};
498
500
501#endif // QMENU_P_H
The QAction class provides an abstraction for user commands that can be added to different user inter...
Definition qaction.h:30
ActionEvent
This enum type is used when calling QAction::activate()
Definition qaction.h:175
bool isSeparator() const
Returns true if this action is a separator action; otherwise it returns false.
Definition qaction.cpp:585
\inmodule QtCore
Definition qbasictimer.h:18
void start(int msec, QObject *obj)
\obsolete Use chrono overload instead.
int timerId() const noexcept
Returns the timer's ID.
Definition qbasictimer.h:35
void stop()
Stops the timer.
bool isActive() const noexcept
Returns true if the timer is running and has not been stopped; otherwise returns false.
Definition qbasictimer.h:34
\inmodule QtCore
Definition qeventloop.h:16
Definition qlist.h:75
\inmodule QtCore
Definition qmargins.h:24
ScrollerTearOffItem(Type type, QMenuPrivate *mPrivate, QWidget *parent=nullptr, Qt::WindowFlags f=Qt::WindowFlags())
Definition qmenu.cpp:1028
void updateScrollerRects(const QRect &rect)
Definition qmenu.cpp:1054
void paintEvent(QPaintEvent *e) override
This event handler can be reimplemented in a subclass to receive paint events passed in event.
Definition qmenu.cpp:1035
void updateLayoutDirection()
Definition qmenu.cpp:949
struct QMenuPrivate::QMenuScroller * scroll
void init()
Definition qmenu.cpp:158
QPointer< QPlatformMenu > platformMenu
Definition qmenu_p.h:442
quint8 ncols
Definition qmenu_p.h:474
QEventLoop * eventLoop
Definition qmenu_p.h:389
QAction * menuAction
Definition qmenu_p.h:423
uint maxIconWidth
Definition qmenu_p.h:467
QList< QRect > actionRects
Definition qmenu_p.h:317
bool delayedPopupGuard
Definition qmenu_p.h:486
QPointer< QWidget > noReplayFor
Definition qmenu_p.h:446
void _q_actionTriggered()
Definition qmenu.cpp:1521
void hideUpToMenuBar()
Definition qmenu.cpp:517
@ SelectedFromElsewhere
Definition qmenu_p.h:363
@ SelectedFromKeyboard
Definition qmenu_p.h:362
QAction * actionAt(int i) const
Definition qmenu_p.h:412
void scrollMenu(QMenuScroller::ScrollLocation location, bool active=false)
Definition qmenu.cpp:1237
QString searchBuffer
Definition qmenu_p.h:393
int getLastVisibleAction() const
Definition qmenu.cpp:488
void popupAction(QAction *, int, bool)
Definition qmenu.cpp:647
void activateCausedStack(const QList< QPointer< QWidget > > &, QAction *, QAction::ActionEvent, bool)
Definition qmenu.cpp:1411
static QMenu * mouseDown
Definition qmenu_p.h:328
void popup(const QPoint &p, QAction *atAction, PositionFunction positionFunction={})
Definition qmenu.cpp:2316
std::function< QPoint(const QSize &)> PositionFunction
Definition qmenu_p.h:274
void updateActionRects() const
Definition qmenu.cpp:333
bool tearoffHighlighted
Definition qmenu_p.h:494
QPointer< QTornOffMenu > tornPopup
Definition qmenu_p.h:416
QPoint mousePopupPos
Definition qmenu_p.h:329
void setSyncAction()
Definition qmenu.cpp:666
int indexOf(QAction *act) const
Definition qmenu_p.h:413
QPointer< QAction > syncAction
Definition qmenu_p.h:390
void syncPlatformMenu()
Definition qmenu.cpp:204
bool lastContextMenu
Definition qmenu_p.h:483
QPlatformMenuItem * insertActionInPlatformMenu(const QAction *action, QPlatformMenuItem *beforeItem)
Definition qmenu.cpp:265
bool hasHadMouse
Definition qmenu_p.h:489
int scrollerHeight() const
Definition qmenu.cpp:279
QPlatformMenu * createPlatformMenu()
Definition qmenu.cpp:183
bool hasCheckableItems
Definition qmenu_p.h:482
void setFirstActionActive()
Definition qmenu.cpp:684
void hideMenu(QMenu *menu)
Definition qmenu.cpp:545
QBasicTimer searchBufferTimer
Definition qmenu_p.h:394
void _q_overrideMenuActionDestroyed()
Definition qmenu.cpp:944
struct QMenuPrivate::DelayState delayState
bool mouseEventTaken(QMouseEvent *)
Definition qmenu.cpp:1322
ScrollerTearOffItem * scrollDownItem
Definition qmenu_p.h:461
bool isContextMenu() const
Definition qmenu.cpp:324
void _q_platformMenuAboutToShow()
Definition qmenu.cpp:1561
QPointer< QAction > defaultAction
Definition qmenu_p.h:421
virtual QList< QPointer< QWidget > > calcCausedStack() const
Definition qmenu.cpp:309
void drawScroller(QPainter *painter, ScrollerTearOffItem::Type type, const QRect &rect)
Definition qmenu.cpp:965
QRect actionRect(QAction *) const
Definition qmenu.cpp:505
QRect rect() const
Definition qmenu.cpp:1015
bool useFullScreenForPopup() const
Definition qmenu.cpp:287
void activateAction(QAction *, QAction::ActionEvent, bool self=true)
Definition qmenu.cpp:1452
bool collapsibleSeparators
Definition qmenu_p.h:484
void copyActionToPlatformItem(const QAction *action, QPlatformMenuItem *item)
Definition qmenu.cpp:228
QMenuSloppyState sloppyState
Definition qmenu_p.h:418
QHash< QAction *, QWidget * > widgetItems
Definition qmenu_p.h:318
bool tearoff
Definition qmenu_p.h:492
bool itemsDirty
Definition qmenu_p.h:481
QPointer< QAction > actionAboutToTrigger
Definition qmenu_p.h:444
void setOverrideMenuAction(QAction *)
Definition qmenu.cpp:932
bool activationRecursionGuard
Definition qmenu_p.h:472
QAction * actionAt(QPoint p) const
Definition qmenu.cpp:920
QWidget * topCausedWidget() const
Definition qmenu.cpp:912
static QMenuPrivate * get(QMenu *m)
Definition qmenu_p.h:309
bool aboutToHide
Definition qmenu_p.h:490
QPointer< QScreen > popupScreen
Definition qmenu_p.h:479
QWindow * transientParentWindow() const
Definition qmenu.cpp:624
void drawTearOff(QPainter *painter, const QRect &rect)
Definition qmenu.cpp:991
bool tornoff
Definition qmenu_p.h:493
bool toolTipsVisible
Definition qmenu_p.h:485
QPointer< QMenu > activeMenu
Definition qmenu_p.h:397
QAction * currentAction
Definition qmenu_p.h:331
void setCurrentAction(QAction *, int popup=-1, SelectionReason reason=SelectedFromElsewhere, bool activateFirst=false)
Definition qmenu.cpp:708
uint tabWidth
Definition qmenu_p.h:468
void _q_actionHovered()
Definition qmenu.cpp:1553
QRect popupGeometry(QScreen *screen=nullptr) const
Definition qmenu.cpp:292
QMenuCaused causedPopup
Definition qmenu_p.h:406
bool doChildEffects
Definition qmenu_p.h:496
bool hasReceievedEnter
Definition qmenu_p.h:487
bool hasMouseMoved(const QPoint &globalPos)
Definition qmenu.cpp:1582
ScrollerTearOffItem * scrollUpTearOffItem
Definition qmenu_p.h:460
QAction * defaultMenuAction
Definition qmenu_p.h:424
void setPlatformMenu(QPlatformMenu *menu)
Definition qmenu.cpp:191
int mousePopupDelay
Definition qmenu_p.h:470
void childEnter()
Definition qmenu.cpp:811
bool hasParentActiveDelayTimer() const
Definition qmenu.cpp:851
QMenu * subMenu() const
Definition qmenu_p.h:245
bool checkSlope(qreal oldS, qreal newS, bool wantSteeper)
Definition qmenu_p.h:156
MouseEventResult processMouseEvent(const QPointF &mousePos, QAction *resetAction, QAction *currentAction)
Definition qmenu_p.h:163
bool isTimerId(int timerId) const
Definition qmenu_p.h:244
void startTimer()
Definition qmenu_p.h:125
void childLeave()
Definition qmenu.cpp:827
@ EventDiscardsSloppyState
Definition qmenu_p.h:122
@ EventShouldBePropagated
Definition qmenu_p.h:121
bool enabled() const
Definition qmenu_p.h:117
void setSubMenuPopup(const QRect &actionRect, QAction *resetAction, QMenu *subMenu)
Definition qmenu.cpp:836
static qreal slope(const QPointF &p1, const QPointF &p2)
Definition qmenu_p.h:148
void stopTimer()
Definition qmenu_p.h:137
void initialize(QMenu *menu)
Definition qmenu_p.h:104
int timeForTimeout() const
Definition qmenu_p.h:242
void startTimerIfNotRunning()
Definition qmenu_p.h:131
The QMenu class provides a menu widget for use in menu bars, context menus, and other popup menus.
Definition qmenu.h:26
QAction * menuAction() const
Returns the action associated with this menu.
Definition qmenu.cpp:1069
\inmodule QtGui
Definition qevent.h:196
QObject * parent() const
Returns a pointer to the parent object.
Definition qobject.h:346
The QPaintEvent class contains event parameters for paint events.
Definition qevent.h:486
The QPainter class performs low-level painting on widgets and other paint devices.
Definition qpainter.h:46
\inmodule QtCore\reentrant
Definition qpoint.h:217
constexpr qreal y() const noexcept
Returns the y coordinate of this point.
Definition qpoint.h:348
\inmodule QtCore\reentrant
Definition qpoint.h:25
T * data() const noexcept
Definition qpointer.h:73
bool isNull() const noexcept
Definition qpointer.h:84
\inmodule QtCore\reentrant
Definition qrect.h:484
bool contains(const QRectF &r) const noexcept
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition qrect.cpp:1993
\inmodule QtCore\reentrant
Definition qrect.h:30
The QScreen class is used to query screen properties. \inmodule QtGui.
Definition qscreen.h:32
QSetValueOnDestroy(T &toSet, T value)
Definition qmenu_p.h:80
The QSizePolicy class is a layout attribute describing horizontal and vertical resizing policy.
Definition qsizepolicy.h:18
constexpr Policy verticalPolicy() const noexcept
Returns the vertical component of the size policy.
Definition qsizepolicy.h:67
constexpr Policy horizontalPolicy() const noexcept
Returns the horizontal component of the size policy.
Definition qsizepolicy.h:66
Policy
This enum describes the various per-dimension sizing types used when constructing a QSizePolicy.
Definition qsizepolicy.h:29
\inmodule QtCore
Definition qsize.h:25
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
@ SH_Menu_SubMenuUniDirectionFailCount
Definition qstyle.h:693
@ SH_Menu_SubMenuUniDirection
Definition qstyle.h:692
@ SH_Menu_SubMenuResetWhenReenteringParent
Definition qstyle.h:696
@ SH_Menu_SubMenuSloppySelectOtherActions
Definition qstyle.h:694
@ SH_Menu_SubMenuDontStartSloppyOnLeave
Definition qstyle.h:697
@ SH_Menu_SubMenuSloppyCloseTimeout
Definition qstyle.h:695
virtual int styleHint(StyleHint stylehint, const QStyleOption *opt=nullptr, const QWidget *widget=nullptr, QStyleHintReturn *returnData=nullptr) const =0
Returns an integer representing the specified style hint for the given widget described by the provid...
The QWidget class is the base class of all user interface objects.
Definition qwidget.h:99
Qt::LayoutDirection layoutDirection
the layout direction for this widget.
Definition qwidget.h:170
QRect geometry
the geometry of the widget relative to its parent and excluding the window frame
Definition qwidget.h:106
QList< QAction * > actions() const
Returns the (possibly empty) list of this widget's actions.
Definition qwidget.cpp:3207
QRect rect
the internal geometry of the widget excluding any window frame
Definition qwidget.h:116
QStyle * style() const
Definition qwidget.cpp:2600
\inmodule QtGui
Definition qwindow.h:63
QPixmap p2
QPixmap p1
[0]
direction
Combined button and popup list for selecting options.
@ LeftToRight
Orientation
Definition qnamespace.h:98
@ Horizontal
Definition qnamespace.h:99
@ Vertical
Definition qnamespace.h:100
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
bool qFuzzyIsNull(qfloat16 f) noexcept
Definition qfloat16.h:349
static int perp(Qt::Orientation o, const QPoint &pos)
Definition qmenu_p.h:55
static int & rperp(Qt::Orientation o, QPoint &pos)
Definition qmenu_p.h:61
static int & rpick(Qt::Orientation o, QPoint &pos)
Definition qmenu_p.h:46
static QT_BEGIN_NAMESPACE int pick(Qt::Orientation o, const QPoint &pos)
Definition qmenu_p.h:40
constexpr T qAbs(const T &t)
Definition qnumeric.h:328
GLint location
const GLfloat * m
GLfloat GLfloat GLfloat w
[0]
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLbitfield GLuint64 timeout
[4]
GLfloat GLfloat f
GLenum type
GLfloat GLfloat p
[1]
QScreen * screen
[1]
Definition main.cpp:29
#define QT_REQUIRE_CONFIG(feature)
unsigned int uint
Definition qtypes.h:34
double qreal
Definition qtypes.h:187
unsigned char quint8
Definition qtypes.h:46
QByteArray page
[45]
dialog exec()
QGraphicsItem * item
QPainter painter(this)
[7]
QMenu menu
[5]
QSizePolicy policy
void start(int timeout, QAction *toStartAction)
Definition qmenu_p.h:344
void initialize(QMenu *parent)
Definition qmenu_p.h:339
QPointer< QWidget > widget
Definition qmenu_p.h:402
QPointer< QAction > action
Definition qmenu_p.h:403
Definition moc.h:23