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
550{
551 Q_D(QAction);
552 d->icon = icon;
553 d->sendDataChanged();
554}
555
557{
558 Q_D(const QAction);
559 return d->icon;
560}
561
572{
573 Q_D(QAction);
574 if (d->separator == b)
575 return;
576
577 d->separator = b;
578 d->sendDataChanged();
579}
580
588{
589 Q_D(const QAction);
590 return d->separator;
591}
592
614{
615 Q_D(QAction);
616 if (d->text == text)
617 return;
618
619 d->text = text;
620 d->sendDataChanged();
621}
622
624{
625 Q_D(const QAction);
626 QString s = d->text;
627 if (s.isEmpty()) {
628 s = d->iconText;
629 s.replace(u'&', "&&"_L1);
630 }
631 return s;
632}
633
654{
655 Q_D(QAction);
656 if (d->iconText == text)
657 return;
658
659 d->iconText = text;
660 d->sendDataChanged();
661}
662
664{
665 Q_D(const QAction);
666 if (d->iconText.isEmpty())
667 return qt_strippedText(d->text);
668 return d->iconText;
669}
670
682void QAction::setToolTip(const QString &tooltip)
683{
684 Q_D(QAction);
685 if (d->tooltip == tooltip)
686 return;
687
688 d->tooltip = tooltip;
689 d->sendDataChanged();
690}
691
693{
694 Q_D(const QAction);
695 if (d->tooltip.isEmpty()) {
696 if (!d->text.isEmpty())
697 return qt_strippedText(d->text);
698 return qt_strippedText(d->iconText);
699 }
700 return d->tooltip;
701}
702
714void QAction::setStatusTip(const QString &statustip)
715{
716 Q_D(QAction);
717 if (d->statustip == statustip)
718 return;
719
720 d->statustip = statustip;
721 d->sendDataChanged();
722}
723
725{
726 Q_D(const QAction);
727 return d->statustip;
728}
729
739{
740 Q_D(QAction);
741 return d->showStatusText(object, statusTip());
742}
743
754void QAction::setWhatsThis(const QString &whatsthis)
755{
756 Q_D(QAction);
757 if (d->whatsthis == whatsthis)
758 return;
759
760 d->whatsthis = whatsthis;
761 d->sendDataChanged();
762}
763
765{
766 Q_D(const QAction);
767 return d->whatsthis;
768}
769
800{
801 Q_D(QAction);
802 if (d->priority == priority)
803 return;
804
805 d->priority = priority;
806 d->sendDataChanged();
807}
808
810{
811 Q_D(const QAction);
812 return d->priority;
813}
814
835{
836 Q_D(QAction);
837 if (d->checkable == b)
838 return;
839
840 d->checkable = b;
841 QPointer<QAction> guard(this);
842 d->sendDataChanged();
843 if (guard)
845 if (guard && d->checked)
846 emit toggled(b);
847}
848
850{
851 Q_D(const QAction);
852 return d->checkable;
853}
854
862{
863 Q_D(QAction);
864 setChecked(!d->checked);
865}
866
880{
881 Q_D(QAction);
882 if (d->checked == b)
883 return;
884
885 d->checked = b;
886 if (!d->checkable)
887 return;
888 QPointer<QAction> guard(this);
889 d->sendDataChanged();
890 if (guard)
891 emit toggled(b);
892}
893
895{
896 Q_D(const QAction);
897 return d->checked && d->checkable;
898}
899
930{
931 Q_D(QAction);
932 if (d->explicitEnabledValue == b && d->explicitEnabled)
933 return;
934 d->explicitEnabledValue = b;
935 d->explicitEnabled = true;
936 QAPP_CHECK("setEnabled");
937 d->setEnabled(b, false);
938}
939
940bool QActionPrivate::setEnabled(bool b, bool byGroup)
941{
942 Q_Q(QAction);
943 if (b && !visible)
944 b = false;
945 if (b && !byGroup && (group && !group->isEnabled()))
946 b = false;
947 if (b && byGroup && explicitEnabled)
949
950 if (b == enabled)
951 return false;
952
953 enabled = b;
954#if QT_CONFIG(shortcut)
955 setShortcutEnabled(b, QGuiApplicationPrivate::instance()->shortcutMap);
956#endif
957 QPointer guard(q);
959 if (guard)
960 emit q->enabledChanged(b);
961 return true;
962}
963
965{
966 Q_D(QAction);
967 if (!d->explicitEnabled)
968 return;
969 d->explicitEnabled = false;
970 d->setEnabled(true, false);
971}
972
974{
975 Q_D(const QAction);
976 return d->enabled;
977}
978
993{
994 Q_D(QAction);
995 if (b != d->forceInvisible)
996 return;
997 d->forceInvisible = !b;
998 if (b && d->group && !d->group->isVisible())
999 return;
1000 d->setVisible(b);
1001}
1002
1004{
1005 Q_Q(QAction);
1006 if (b == visible)
1007 return;
1008 QAPP_CHECK("setVisible");
1009 visible = b;
1010 bool enable = visible;
1011 if (enable && explicitEnabled)
1013 QPointer guard(q);
1014 if (!setEnabled(enable, false))
1016 if (guard)
1017 emit q->visibleChanged();
1018}
1019
1021{
1022 Q_D(const QAction);
1023 return d->visible;
1024}
1025
1030{
1031 Q_D(QAction);
1032 if (e->type() == QEvent::ActionChanged) {
1033 for (auto object : std::as_const(d->associatedObjects))
1034 QCoreApplication::sendEvent(object, e);
1035 }
1036
1037#if QT_CONFIG(shortcut)
1038 if (e->type() == QEvent::Shortcut) {
1039 QShortcutEvent *se = static_cast<QShortcutEvent *>(e);
1040 Q_ASSERT_X(d_func()->shortcutIds.contains(se->shortcutId()),
1041 "QAction::event",
1042 "Received shortcut event from incorrect shortcut");
1043 if (se->isAmbiguous())
1044 qWarning("QAction::event: Ambiguous shortcut overload: %s", se->key().toString(QKeySequence::NativeText).toLatin1().constData());
1045 else
1047 return true;
1048 }
1049#endif // QT_CONFIG(shortcut)
1050 return QObject::event(e);
1051}
1052
1059{
1060 Q_D(const QAction);
1061 return d->userData;
1062}
1063
1070{
1071 Q_D(QAction);
1072 if (d->userData == data)
1073 return;
1074 d->userData = data;
1075 d->sendDataChanged();
1076}
1077
1085{
1086 Q_D(QAction);
1087 if (event == Trigger) {
1088 // Ignore even explicit triggers when explicitly disabled
1089 if ((d->explicitEnabled && !d->explicitEnabledValue) || (d->group && !d->group->isEnabled()))
1090 return;
1091 QPointer<QObject> guard = this;
1092 if (d->checkable) {
1093 // the checked action of an exclusive group may not be unchecked
1094 if (d->checked && (d->group
1095 && d->group->exclusionPolicy() == QActionGroup::ExclusionPolicy::Exclusive
1096 && d->group->checkedAction() == this)) {
1097 if (!guard.isNull())
1098 emit triggered(true);
1099 return;
1100 }
1101 setChecked(!d->checked);
1102 }
1103 if (!guard.isNull())
1104 emit triggered(d->checked);
1105 } else if (event == Hover) {
1106 emit hovered();
1107 }
1108}
1109
1183{
1184 Q_D(QAction);
1185 if (d->menuRole == menuRole)
1186 return;
1187
1188 d->menuRole = menuRole;
1189 d->sendDataChanged();
1190}
1191
1193{
1194 Q_D(const QAction);
1195 return d->menuRole;
1196}
1197
1208QObject* QAction::menuObject() const
1209{
1210 Q_D(const QAction);
1211 return d->menu();
1212}
1213
1219void QAction::setMenuObject(QObject *object)
1220{
1221 Q_D(QAction);
1222 d->setMenu(object);
1223}
1224
1243{
1244 Q_D(QAction);
1245 if (d->iconVisibleInMenu == -1 || visible != bool(d->iconVisibleInMenu)) {
1246 int oldValue = d->iconVisibleInMenu;
1247 d->iconVisibleInMenu = visible;
1248 // Only send data changed if we really need to.
1249 if (oldValue != -1
1251 d->sendDataChanged();
1252 }
1253 }
1254}
1255
1257{
1258 Q_D(const QAction);
1259 if (d->iconVisibleInMenu == -1) {
1261 }
1262 return d->iconVisibleInMenu;
1263}
1264
1279{
1280 Q_D(QAction);
1281 if (d->shortcutVisibleInContextMenu == -1 || visible != bool(d->shortcutVisibleInContextMenu)) {
1282 int oldValue = d->shortcutVisibleInContextMenu;
1283 d->shortcutVisibleInContextMenu = visible;
1284 // Only send data changed if we really need to.
1285 if (oldValue != -1
1287 d->sendDataChanged();
1288 }
1289 }
1290}
1291
1293{
1294 Q_D(const QAction);
1295 if (d->shortcutVisibleInContextMenu == -1)
1297 return d->shortcutVisibleInContextMenu;
1298}
1299
1300#ifndef QT_NO_DEBUG_STREAM
1301Q_GUI_EXPORT QDebug operator<<(QDebug d, const QAction *action)
1302{
1303 QDebugStateSaver saver(d);
1304 d.nospace();
1305 d << "QAction(" << static_cast<const void *>(action);
1306 if (action) {
1307 d << " text=" << action->text();
1308 if (!action->toolTip().isEmpty())
1309 d << " toolTip=" << action->toolTip();
1310 if (action->isCheckable())
1311 d << " checked=" << action->isChecked();
1312#if QT_CONFIG(shortcut)
1313 if (!action->shortcuts().isEmpty())
1314 d << " shortcuts=" << action->shortcuts();
1315#endif
1316 d << " menuRole=";
1318 d << " enabled=" << action->isEnabled();
1319 d << " visible=" << action->isVisible();
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:940
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:1003
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:1182
void setChecked(bool)
Definition qaction.cpp:879
QVariant data() const
Returns the user data as set in QAction::setData.
Definition qaction.cpp:1058
void setShortcutVisibleInContextMenu(bool show)
Definition qaction.cpp:1278
QString iconText
the action's descriptive icon text
Definition qaction.h:40
void setWhatsThis(const QString &what)
Definition qaction.cpp:754
void setStatusTip(const QString &statusTip)
Definition qaction.cpp:714
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:1029
void toggled(bool)
This signal is emitted whenever a checkable action changes its isChecked() status.
void setIconVisibleInMenu(bool visible)
Definition qaction.cpp:1242
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:549
bool isSeparator() const
Returns true if this action is a separator action; otherwise it returns false.
Definition qaction.cpp:587
bool isVisible() const
Definition qaction.cpp:1020
QActionGroup * actionGroup() const
Returns the action group for this action.
Definition qaction.cpp:493
bool isShortcutVisibleInContextMenu() const
Definition qaction.cpp:1292
void toggle()
This is a convenience function for the \l checked property.
Definition qaction.cpp:861
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:571
QString statusTip
the action's status tip
Definition qaction.h:42
bool isCheckable() const
Definition qaction.cpp:849
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:613
void setIconText(const QString &text)
Definition qaction.cpp:653
void resetEnabled()
Definition qaction.cpp:964
void setPriority(Priority priority)
Definition qaction.cpp:799
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:738
~QAction()
Destroys the object and frees allocated resources.
Definition qaction.cpp:447
bool isIconVisibleInMenu() const
Definition qaction.cpp:1256
void activate(ActionEvent event)
Sends the relevant signals for ActionEvent event.
Definition qaction.cpp:1084
void setToolTip(const QString &tip)
Definition qaction.cpp:682
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:929
void setCheckable(bool)
Definition qaction.cpp:834
MenuRole menuRole
the action's menu role
Definition qaction.h:52
bool isChecked() const
Definition qaction.cpp:894
void setVisible(bool)
Definition qaction.cpp:992
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:1069
bool isEnabled() const
Definition qaction.cpp:973
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:290
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:3829
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:1301
static QString qt_strippedText(QString s)
Definition qaction.cpp:31
#define qApp
#define qWarning
Definition qlogging.h:167
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]