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
qaction.cpp
Go to the documentation of this file.
1// Copyright (C) 2020 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#include "qaction.h"
5#include "qactiongroup.h"
6
7#include "qaction_p.h"
8#include "qguiapplication.h"
9#include "qevent.h"
10#include "qlist.h"
11#include "qstylehints.h"
12#if QT_CONFIG(shortcut)
13# include <private/qshortcutmap_p.h>
14#endif
15#include <private/qguiapplication_p.h>
16#include <private/qdebug_p.h>
17
18#define QAPP_CHECK(functionName) \
19 if (Q_UNLIKELY(!QCoreApplication::instance())) { \
20 qWarning("QAction: Initialize Q(Gui)Application before calling '" functionName "'."); \
21 return; \
22 }
23
25
26using namespace Qt::StringLiterals;
27
28/*
29 internal: guesses a descriptive text from a text suited for a menu entry
30 */
32{
33 s.remove("..."_L1);
34 for (int i = 0; i < s.size(); ++i) {
35 if (s.at(i) == u'&')
36 s.remove(i, 1);
37 }
38 return s.trimmed();
39}
40
45
48 autorepeat(1),
49#endif
50 enabled(1), explicitEnabled(0), explicitEnabledValue(1), visible(1), forceInvisible(0), checkable(0),
51 checked(0), separator(0), fontSet(false),
52 iconVisibleInMenu(-1), shortcutVisibleInContextMenu(-1)
53{
54}
55
56#if QT_CONFIG(shortcut)
57static bool dummy(QObject *, Qt::ShortcutContext) { return false; } // only for GUI testing.
58
59QShortcutMap::ContextMatcher QActionPrivate::contextMatcher() const
60{
61 return dummy;
62};
63#endif // QT_CONFIG(shortcut)
64
66
70
79
80#if QT_CONFIG(shortcut)
81void QActionPrivate::redoGrab(QShortcutMap &map)
82{
83 Q_Q(QAction);
84 for (int id : std::as_const(shortcutIds)) {
85 if (id)
86 map.removeShortcut(id, q);
87 }
88
89 shortcutIds.clear();
90 for (const QKeySequence &shortcut : std::as_const(shortcuts)) {
91 if (!shortcut.isEmpty())
92 shortcutIds.append(map.addShortcut(q, shortcut, shortcutContext, contextMatcher()));
93 else
94 shortcutIds.append(0);
95 }
96 if (!enabled) {
97 for (int id : std::as_const(shortcutIds)) {
98 if (id)
99 map.setShortcutEnabled(false, id, q);
100 }
101 }
102 if (!autorepeat) {
103 for (int id : std::as_const(shortcutIds)) {
104 if (id)
105 map.setShortcutAutoRepeat(false, id, q);
106 }
107 }
108}
109
110void QActionPrivate::setShortcutEnabled(bool enable, QShortcutMap &map)
111{
112 Q_Q(QAction);
113 for (int id : std::as_const(shortcutIds)) {
114 if (id)
115 map.setShortcutEnabled(enable, id, q);
116 }
117}
118#endif // QT_NO_SHORTCUT
119
121{
122 if (QObject *receiver = object ? object : parent) {
123 QStatusTipEvent tip(str);
124 QCoreApplication::sendEvent(receiver, &tip);
125 return true;
126 }
127 return false;
128}
129
133
135{
136 return nullptr;
137}
138
231 : QAction(*QGuiApplicationPrivate::instance()->createActionPrivate(), parent)
232{
233}
234
247 : QAction(parent)
248{
249 Q_D(QAction);
250 d->text = text;
251}
252
265 : QAction(text, parent)
266{
267 Q_D(QAction);
268 d->icon = icon;
269}
270
275 : QObject(dd, parent)
276{
277 Q_D(QAction);
278 d->group = qobject_cast<QActionGroup *>(parent);
279 if (d->group)
280 d->group->addAction(this);
281}
282
283#if QT_CONFIG(shortcut)
297void QAction::setShortcut(const QKeySequence &shortcut)
298{
299 if (shortcut.isEmpty())
300 setShortcuts({});
301 else
302 setShortcuts({ shortcut });
303}
304
311void QAction::setShortcuts(const QList<QKeySequence> &shortcuts)
312{
313 QAPP_CHECK("setShortcuts");
314 Q_D(QAction);
315
316 if (d->shortcuts == shortcuts)
317 return;
318
319 d->shortcuts = shortcuts;
320 d->redoGrab(QGuiApplicationPrivate::instance()->shortcutMap);
321 d->sendDataChanged();
322}
323
332void QAction::setShortcuts(QKeySequence::StandardKey key)
333{
334 QList <QKeySequence> list = QKeySequence::keyBindings(key);
335 setShortcuts(list);
336}
337
343QKeySequence QAction::shortcut() const
344{
345 Q_D(const QAction);
346 if (d->shortcuts.isEmpty())
347 return QKeySequence();
348 return d->shortcuts.first();
349}
350
357QList<QKeySequence> QAction::shortcuts() const
358{
359 Q_D(const QAction);
360 return d->shortcuts;
361}
362
370void QAction::setShortcutContext(Qt::ShortcutContext context)
371{
372 Q_D(QAction);
373 if (d->shortcutContext == context)
374 return;
375 QAPP_CHECK("setShortcutContext");
376 d->shortcutContext = context;
377 d->redoGrab(QGuiApplicationPrivate::instance()->shortcutMap);
378 d->sendDataChanged();
379}
380
381Qt::ShortcutContext QAction::shortcutContext() const
382{
383 Q_D(const QAction);
384 return d->shortcutContext;
385}
386
396void QAction::setAutoRepeat(bool on)
397{
398 Q_D(QAction);
399 if (d->autorepeat == on)
400 return;
401 QAPP_CHECK("setAutoRepeat");
402 d->autorepeat = on;
403 d->redoGrab(QGuiApplicationPrivate::instance()->shortcutMap);
404 d->sendDataChanged();
405}
406
407bool QAction::autoRepeat() const
408{
409 Q_D(const QAction);
410 return d->autorepeat;
411}
412#endif // QT_CONFIG(shortcut)
413
427{
428 Q_D(QAction);
429 if (d->font == font)
430 return;
431
432 d->fontSet = true;
433 d->font = font;
434 d->sendDataChanged();
435}
436
438{
439 Q_D(const QAction);
440 return d->font;
441}
442
443
448{
449 Q_D(QAction);
450
451 d->destroy();
452
453 if (d->group)
454 d->group->removeAction(this);
455#if QT_CONFIG(shortcut)
456 if (qApp) {
457 for (int id : std::as_const(d->shortcutIds)) {
458 if (id)
459 QGuiApplicationPrivate::instance()->shortcutMap.removeShortcut(id, this);
460 }
461 }
462#endif
463}
464
474{
475 Q_D(QAction);
476 if (group == d->group)
477 return;
478
479 if (d->group)
480 d->group->removeAction(this);
481 d->group = group;
482 if (group)
483 group->addAction(this);
484 d->sendDataChanged();
485}
486
494{
495 Q_D(const QAction);
496 return d->group;
497}
498
505QList<QObject*> QAction::associatedObjects() const
506{
507 Q_D(const QAction);
508 return d->associatedObjects;
509}
510
548{
549 Q_D(QAction);
550 d->icon = icon;
551 d->sendDataChanged();
552}
553
555{
556 Q_D(const QAction);
557 return d->icon;
558}
559
570{
571 Q_D(QAction);
572 if (d->separator == b)
573 return;
574
575 d->separator = b;
576 d->sendDataChanged();
577}
578
586{
587 Q_D(const QAction);
588 return d->separator;
589}
590
612{
613 Q_D(QAction);
614 if (d->text == text)
615 return;
616
617 d->text = text;
618 d->sendDataChanged();
619}
620
622{
623 Q_D(const QAction);
624 QString s = d->text;
625 if (s.isEmpty()) {
626 s = d->iconText;
627 s.replace(u'&', "&&"_L1);
628 }
629 return s;
630}
631
652{
653 Q_D(QAction);
654 if (d->iconText == text)
655 return;
656
657 d->iconText = text;
658 d->sendDataChanged();
659}
660
662{
663 Q_D(const QAction);
664 if (d->iconText.isEmpty())
665 return qt_strippedText(d->text);
666 return d->iconText;
667}
668
680void QAction::setToolTip(const QString &tooltip)
681{
682 Q_D(QAction);
683 if (d->tooltip == tooltip)
684 return;
685
686 d->tooltip = tooltip;
687 d->sendDataChanged();
688}
689
691{
692 Q_D(const QAction);
693 if (d->tooltip.isEmpty()) {
694 if (!d->text.isEmpty())
695 return qt_strippedText(d->text);
696 return qt_strippedText(d->iconText);
697 }
698 return d->tooltip;
699}
700
712void QAction::setStatusTip(const QString &statustip)
713{
714 Q_D(QAction);
715 if (d->statustip == statustip)
716 return;
717
718 d->statustip = statustip;
719 d->sendDataChanged();
720}
721
723{
724 Q_D(const QAction);
725 return d->statustip;
726}
727
737{
738 Q_D(QAction);
739 return d->showStatusText(object, statusTip());
740}
741
752void QAction::setWhatsThis(const QString &whatsthis)
753{
754 Q_D(QAction);
755 if (d->whatsthis == whatsthis)
756 return;
757
758 d->whatsthis = whatsthis;
759 d->sendDataChanged();
760}
761
763{
764 Q_D(const QAction);
765 return d->whatsthis;
766}
767
798{
799 Q_D(QAction);
800 if (d->priority == priority)
801 return;
802
803 d->priority = priority;
804 d->sendDataChanged();
805}
806
808{
809 Q_D(const QAction);
810 return d->priority;
811}
812
833{
834 Q_D(QAction);
835 if (d->checkable == b)
836 return;
837
838 d->checkable = b;
839 QPointer<QAction> guard(this);
840 d->sendDataChanged();
841 if (guard)
843 if (guard && d->checked)
844 emit toggled(b);
845}
846
848{
849 Q_D(const QAction);
850 return d->checkable;
851}
852
860{
861 Q_D(QAction);
862 setChecked(!d->checked);
863}
864
878{
879 Q_D(QAction);
880 if (d->checked == b)
881 return;
882
883 d->checked = b;
884 if (!d->checkable)
885 return;
886 QPointer<QAction> guard(this);
887 d->sendDataChanged();
888 if (guard)
889 emit toggled(b);
890}
891
893{
894 Q_D(const QAction);
895 return d->checked && d->checkable;
896}
897
928{
929 Q_D(QAction);
930 if (d->explicitEnabledValue == b && d->explicitEnabled)
931 return;
932 d->explicitEnabledValue = b;
933 d->explicitEnabled = true;
934 QAPP_CHECK("setEnabled");
935 d->setEnabled(b, false);
936}
937
938bool QActionPrivate::setEnabled(bool b, bool byGroup)
939{
940 Q_Q(QAction);
941 if (b && !visible)
942 b = false;
943 if (b && !byGroup && (group && !group->isEnabled()))
944 b = false;
945 if (b && byGroup && explicitEnabled)
947
948 if (b == enabled)
949 return false;
950
951 enabled = b;
952#if QT_CONFIG(shortcut)
953 setShortcutEnabled(b, QGuiApplicationPrivate::instance()->shortcutMap);
954#endif
955 QPointer guard(q);
957 if (guard)
958 emit q->enabledChanged(b);
959 return true;
960}
961
963{
964 Q_D(QAction);
965 if (!d->explicitEnabled)
966 return;
967 d->explicitEnabled = false;
968 d->setEnabled(true, false);
969}
970
972{
973 Q_D(const QAction);
974 return d->enabled;
975}
976
991{
992 Q_D(QAction);
993 if (b != d->forceInvisible)
994 return;
995 d->forceInvisible = !b;
996 if (b && d->group && !d->group->isVisible())
997 return;
998 d->setVisible(b);
999}
1000
1002{
1003 Q_Q(QAction);
1004 if (b == visible)
1005 return;
1006 QAPP_CHECK("setVisible");
1007 visible = b;
1008 bool enable = visible;
1009 if (enable && explicitEnabled)
1011 QPointer guard(q);
1012 if (!setEnabled(enable, false))
1014 if (guard)
1015 emit q->visibleChanged();
1016}
1017
1019{
1020 Q_D(const QAction);
1021 return d->visible;
1022}
1023
1028{
1029 Q_D(QAction);
1030 if (e->type() == QEvent::ActionChanged) {
1031 for (auto object : std::as_const(d->associatedObjects))
1032 QCoreApplication::sendEvent(object, e);
1033 }
1034
1035#if QT_CONFIG(shortcut)
1036 if (e->type() == QEvent::Shortcut) {
1037 QShortcutEvent *se = static_cast<QShortcutEvent *>(e);
1038 Q_ASSERT_X(d_func()->shortcutIds.contains(se->shortcutId()),
1039 "QAction::event",
1040 "Received shortcut event from incorrect shortcut");
1041 if (se->isAmbiguous())
1042 qWarning("QAction::event: Ambiguous shortcut overload: %s", se->key().toString(QKeySequence::NativeText).toLatin1().constData());
1043 else
1045 return true;
1046 }
1047#endif // QT_CONFIG(shortcut)
1048 return QObject::event(e);
1049}
1050
1057{
1058 Q_D(const QAction);
1059 return d->userData;
1060}
1061
1068{
1069 Q_D(QAction);
1070 if (d->userData == data)
1071 return;
1072 d->userData = data;
1073 d->sendDataChanged();
1074}
1075
1083{
1084 Q_D(QAction);
1085 if (event == Trigger) {
1086 // Ignore even explicit triggers when explicitly disabled
1087 if ((d->explicitEnabled && !d->explicitEnabledValue) || (d->group && !d->group->isEnabled()))
1088 return;
1089 QPointer<QObject> guard = this;
1090 if (d->checkable) {
1091 // the checked action of an exclusive group may not be unchecked
1092 if (d->checked && (d->group
1093 && d->group->exclusionPolicy() == QActionGroup::ExclusionPolicy::Exclusive
1094 && d->group->checkedAction() == this)) {
1095 if (!guard.isNull())
1096 emit triggered(true);
1097 return;
1098 }
1099 setChecked(!d->checked);
1100 }
1101 if (!guard.isNull())
1102 emit triggered(d->checked);
1103 } else if (event == Hover) {
1104 emit hovered();
1105 }
1106}
1107
1181{
1182 Q_D(QAction);
1183 if (d->menuRole == menuRole)
1184 return;
1185
1186 d->menuRole = menuRole;
1187 d->sendDataChanged();
1188}
1189
1191{
1192 Q_D(const QAction);
1193 return d->menuRole;
1194}
1195
1206QObject* QAction::menuObject() const
1207{
1208 Q_D(const QAction);
1209 return d->menu();
1210}
1211
1217void QAction::setMenuObject(QObject *object)
1218{
1219 Q_D(QAction);
1220 d->setMenu(object);
1221}
1222
1241{
1242 Q_D(QAction);
1243 if (d->iconVisibleInMenu == -1 || visible != bool(d->iconVisibleInMenu)) {
1244 int oldValue = d->iconVisibleInMenu;
1245 d->iconVisibleInMenu = visible;
1246 // Only send data changed if we really need to.
1247 if (oldValue != -1
1249 d->sendDataChanged();
1250 }
1251 }
1252}
1253
1255{
1256 Q_D(const QAction);
1257 if (d->iconVisibleInMenu == -1) {
1259 }
1260 return d->iconVisibleInMenu;
1261}
1262
1277{
1278 Q_D(QAction);
1279 if (d->shortcutVisibleInContextMenu == -1 || visible != bool(d->shortcutVisibleInContextMenu)) {
1280 int oldValue = d->shortcutVisibleInContextMenu;
1281 d->shortcutVisibleInContextMenu = visible;
1282 // Only send data changed if we really need to.
1283 if (oldValue != -1
1285 d->sendDataChanged();
1286 }
1287 }
1288}
1289
1291{
1292 Q_D(const QAction);
1293 if (d->shortcutVisibleInContextMenu == -1)
1295 return d->shortcutVisibleInContextMenu;
1296}
1297
1298#ifndef QT_NO_DEBUG_STREAM
1299Q_GUI_EXPORT QDebug operator<<(QDebug d, const QAction *action)
1300{
1301 QDebugStateSaver saver(d);
1302 d.nospace();
1303 d << "QAction(" << static_cast<const void *>(action);
1304 if (action) {
1305 d << " text=" << action->text();
1306 if (!action->toolTip().isEmpty())
1307 d << " toolTip=" << action->toolTip();
1308 if (action->isCheckable())
1309 d << " checked=" << action->isChecked();
1310#if QT_CONFIG(shortcut)
1311 if (!action->shortcuts().isEmpty())
1312 d << " shortcuts=" << action->shortcuts();
1313#endif
1314 d << " menuRole=";
1316 d << " enabled=" << action->isEnabled();
1317 d << " visible=" << action->isVisible();
1318 } else {
1319 d << '0';
1320 }
1321 d << ')';
1322 return d;
1323}
1324#endif // QT_NO_DEBUG_STREAM
1325
1327
1328#include "moc_qaction.cpp"
The QActionEvent class provides an event that is generated when a QAction is added,...
The QActionGroup class groups actions together.
bool showStatusText(QObject *widget, const QString &str)
Definition qaction.cpp:120
virtual void setMenu(QObject *menu)
Definition qaction.cpp:130
virtual QObject * menu() const
Definition qaction.cpp:134
void sendDataChanged()
Definition qaction.cpp:71
bool setEnabled(bool enable, bool byGroup)
Definition qaction.cpp:938
virtual void destroy()
Definition qaction.cpp:67
uint explicitEnabledValue
Definition qaction_p.h:77
uint explicitEnabled
Definition qaction_p.h:77
void setVisible(bool b)
Definition qaction.cpp:1001
The QAction class provides an abstraction for user commands that can be added to different user inter...
Definition qaction.h:30
void setMenuRole(MenuRole menuRole)
Definition qaction.cpp:1180
void setChecked(bool)
Definition qaction.cpp:877
QVariant data() const
Returns the user data as set in QAction::setData.
Definition qaction.cpp:1056
void setShortcutVisibleInContextMenu(bool show)
Definition qaction.cpp:1276
QString iconText
the action's descriptive icon text
Definition qaction.h:40
void setWhatsThis(const QString &what)
Definition qaction.cpp:752
void setStatusTip(const QString &statusTip)
Definition qaction.cpp:712
void setActionGroup(QActionGroup *group)
Sets this action group to group.
Definition qaction.cpp:473
QAction(QObject *parent=nullptr)
Constructs an action with parent.
Definition qaction.cpp:230
void checkableChanged(bool checkable)
ActionEvent
This enum type is used when calling QAction::activate()
Definition qaction.h:175
@ Trigger
Definition qaction.h:175
@ Hover
Definition qaction.h:175
bool event(QEvent *) override
\reimp
Definition qaction.cpp:1027
void toggled(bool)
This signal is emitted whenever a checkable action changes its isChecked() status.
void setIconVisibleInMenu(bool visible)
Definition qaction.cpp:1240
QList< QObject * > associatedObjects() const
Definition qaction.cpp:505
void hovered()
This signal is emitted when an action is highlighted by the user; for example, when the user pauses w...
MenuRole
This enum describes how an action should be moved into the application menu on \macos.
Definition qaction.h:61
void setIcon(const QIcon &icon)
Definition qaction.cpp:547
bool isSeparator() const
Returns true if this action is a separator action; otherwise it returns false.
Definition qaction.cpp:585
bool isVisible() const
Definition qaction.cpp:1018
QActionGroup * actionGroup() const
Returns the action group for this action.
Definition qaction.cpp:493
bool isShortcutVisibleInContextMenu() const
Definition qaction.cpp:1290
void toggle()
This is a convenience function for the \l checked property.
Definition qaction.cpp:859
Priority
This enum defines priorities for actions in user interface.
Definition qaction.h:64
void setSeparator(bool b)
If b is true then this action will be considered a separator.
Definition qaction.cpp:569
QString statusTip
the action's status tip
Definition qaction.h:42
bool isCheckable() const
Definition qaction.cpp:847
bool visible
whether the action can be seen (e.g.
Definition qaction.h:51
void setFont(const QFont &font)
Definition qaction.cpp:426
QString whatsThis
the action's "What's This?" help text
Definition qaction.h:43
void triggered(bool checked=false)
This signal is emitted when an action is activated by the user; for example, when the user clicks a m...
QFont font
the action's font
Definition qaction.h:44
void setText(const QString &text)
Definition qaction.cpp:611
void setIconText(const QString &text)
Definition qaction.cpp:651
void resetEnabled()
Definition qaction.cpp:962
void setPriority(Priority priority)
Definition qaction.cpp:797
Priority priority
the actions's priority in the user interface.
Definition qaction.h:57
bool showStatusText(QObject *object=nullptr)
Updates the relevant status bar for the UI represented by object by sending a QStatusTipEvent.
Definition qaction.cpp:736
~QAction()
Destroys the object and frees allocated resources.
Definition qaction.cpp:447
bool isIconVisibleInMenu() const
Definition qaction.cpp:1254
void activate(ActionEvent event)
Sends the relevant signals for ActionEvent event.
Definition qaction.cpp:1082
void setToolTip(const QString &tip)
Definition qaction.cpp:680
QString text
the action's descriptive text
Definition qaction.h:39
QString toolTip
the action's tooltip
Definition qaction.h:41
void setEnabled(bool)
Definition qaction.cpp:927
void setCheckable(bool)
Definition qaction.cpp:832
MenuRole menuRole
the action's menu role
Definition qaction.h:52
bool isChecked() const
Definition qaction.cpp:892
void setVisible(bool)
Definition qaction.cpp:990
QIcon icon
the action's icon
Definition qaction.h:38
void setData(const QVariant &var)
Sets the action's internal data to the given data.
Definition qaction.cpp:1067
bool isEnabled() const
Definition qaction.cpp:971
static bool sendEvent(QObject *receiver, QEvent *event)
Sends event event directly to receiver receiver, using the notify() function.
static bool testAttribute(Qt::ApplicationAttribute attribute)
Returns true if attribute attribute is set; otherwise returns false.
\inmodule QtCore
\inmodule QtCore
\inmodule QtCore
Definition qcoreevent.h:45
@ ActionChanged
Definition qcoreevent.h:151
Type type() const
Returns the event type.
Definition qcoreevent.h:304
\reentrant
Definition qfont.h:22
virtual QActionPrivate * createActionPrivate() const
Definition qaction.cpp:41
static QGuiApplicationPrivate * instance()
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.
static QList< QKeySequence > keyBindings(StandardKey key)
void clear()
Definition qmap.h:289
QObject * parent
Definition qobject.h:73
\inmodule QtCore
Definition qobject.h:103
QObject * parent() const
Returns a pointer to the parent object.
Definition qobject.h:346
virtual bool event(QEvent *event)
This virtual function receives events to an object and should return true if the event e was recogniz...
Definition qobject.cpp:1389
The QShortcutEvent class provides an event which is generated when the user presses a key combination...
bool(* ContextMatcher)(QObject *object, Qt::ShortcutContext context)
The QStatusTipEvent class provides an event that is used to show messages in a status bar.
Definition qevent.h:808
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
QString & replace(qsizetype i, qsizetype len, QChar after)
Definition qstring.cpp:3824
bool isEmpty() const noexcept
Returns true if the string has no characters; otherwise returns false.
Definition qstring.h:192
\inmodule QtCore
Definition qvariant.h:65
QString str
[2]
QMap< QString, QString > map
[6]
QString text
Combined button and popup list for selecting options.
static void formatQEnum(QDebug &debug, QEnum value)
Definition qdebug_p.h:59
@ AA_DontShowShortcutsInContextMenus
Definition qnamespace.h:463
@ AA_DontShowIconsInMenus
Definition qnamespace.h:427
ShortcutContext
#define QAPP_CHECK(functionName)
Definition qaction.cpp:18
Q_GUI_EXPORT QDebug operator<<(QDebug d, const QAction *action)
Definition qaction.cpp:1299
static QString qt_strippedText(QString s)
Definition qaction.cpp:31
static void * context
#define qApp
#define qWarning
Definition qlogging.h:166
GLboolean GLboolean GLboolean b
GLuint64 key
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLenum GLenum GLsizei const GLuint GLboolean enabled
GLboolean GLuint group
GLboolean enable
struct _cl_event * event
GLdouble s
[6]
Definition qopenglext.h:235
GLdouble GLdouble GLdouble GLdouble q
Definition qopenglext.h:259
#define Q_ASSERT_X(cond, x, msg)
Definition qrandom.cpp:48
#define QT_CONFIG(feature)
#define emit
QList< int > list
[14]
if(qFloatDistance(a, b)<(1<< 7))
[0]