Qt 6.x
The Qt SDK
Loading...
Searching...
No Matches
qwhatsthis.cpp
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#include "qwhatsthis.h"
5#include "qpointer.h"
6#include "qapplication.h"
7#include <private/qguiapplication_p.h>
8#include "qwidget.h"
9#include "qevent.h"
10#include "qpixmap.h"
11#include "qscreen.h"
12#include "qpainter.h"
13#include "qtimer.h"
14#if QT_CONFIG(action)
15#include "qaction.h"
16#endif // QT_CONFIG(action)
17#include "qcursor.h"
18#include "qbitmap.h"
19#include "qtextdocument.h"
20#include <qpa/qplatformtheme.h>
21#include "private/qtextdocumentlayout_p.h"
22#include "qdebug.h"
23#if QT_CONFIG(accessibility)
24#include "qaccessible.h"
25#endif
26
28
100Q_CORE_EXPORT void qDeleteInEventHandler(QObject *o);
101
102class QWhatsThat : public QWidget
103{
105
106public:
107 QWhatsThat(const QString& txt, QWidget* parent, QWidget *showTextFor);
108 ~QWhatsThat() ;
109
111
112protected:
113 void mousePressEvent(QMouseEvent*) override;
114 void mouseReleaseEvent(QMouseEvent*) override;
115 void mouseMoveEvent(QMouseEvent*) override;
116 void keyPressEvent(QKeyEvent*) override;
117 void paintEvent(QPaintEvent*) override;
118
119private:
120 QPointer<QWidget>widget;
121 bool pressed;
122 QString text;
123 QTextDocument* doc;
124 QString anchor;
125};
126
128
129// shadowWidth not const, for XP drop-shadow-fu turns it to 0
130static int shadowWidth = 6; // also used as '5' and '6' and even '8' below
131static const int vMargin = 8;
132static const int hMargin = 12;
133
134static inline bool dropShadow()
135{
137 return theme->themeHint(QPlatformTheme::DropShadow).toBool();
138 return false;
139}
140
142 : QWidget(parent, Qt::Popup),
143 widget(showTextFor), pressed(false), text(txt)
144{
145 delete instance;
146 instance = this;
149 if (parent)
150 setPalette(parent->palette());
151 setMouseTracking(true);
153#ifndef QT_NO_CURSOR
155#endif
156 QRect r;
157 doc = nullptr;
158 ensurePolished(); // Ensures style sheet font before size calc
159 if (Qt::mightBeRichText(text)) {
160 doc = new QTextDocument();
161 doc->setUndoRedoEnabled(false);
163#ifdef QT_NO_TEXTHTMLPARSER
164 doc->setPlainText(text);
165#else
166 doc->setHtml(text);
167#endif
168 doc->setUndoRedoEnabled(false);
169 doc->adjustSize();
170 r.setTop(0);
171 r.setLeft(0);
172 r.setSize(doc->size().toSize());
173 }
174 else
175 {
177 if (sw < 200)
178 sw = 200;
179 else if (sw > 300)
180 sw = 300;
181
182 r = fontMetrics().boundingRect(0, 0, sw, 1000,
185 text);
186 }
187 shadowWidth = dropShadow() ? 0 : 6;
188 resize(r.width() + 2*hMargin + shadowWidth, r.height() + 2*vMargin + shadowWidth);
189}
190
192{
193 instance = nullptr;
194 if (doc)
195 delete doc;
196}
197
199{
200 pressed = true;
201 if (e->button() == Qt::LeftButton && rect().contains(e->position().toPoint())) {
202 if (doc)
203 anchor = doc->documentLayout()->anchorAt(e->position().toPoint() - QPoint(hMargin, vMargin));
204 return;
205 }
206 close();
207}
208
210{
211 if (!pressed)
212 return;
213 if (widget && e->button() == Qt::LeftButton && doc && rect().contains(e->position().toPoint())) {
214 QString a = doc->documentLayout()->anchorAt(e->position().toPoint() - QPoint(hMargin, vMargin));
215 QString href;
216 if (anchor == a)
217 href = a;
218 anchor.clear();
219 if (!href.isEmpty()) {
220 QWhatsThisClickedEvent e(href);
221 if (QCoreApplication::sendEvent(widget, &e))
222 return;
223 }
224 }
225 close();
226}
227
229{
230#ifdef QT_NO_CURSOR
231 Q_UNUSED(e);
232#else
233 if (!doc)
234 return;
235 QString a = doc->documentLayout()->anchorAt(e->position().toPoint() - QPoint(hMargin, vMargin));
236 if (!a.isEmpty())
238 else
240#endif
241}
242
244{
245 close();
246}
247
249{
250 const bool drawShadow = dropShadow();
251
252 QRect r = rect();
253 r.adjust(0, 0, -1, -1);
254 if (drawShadow)
255 r.adjust(0, 0, -shadowWidth, -shadowWidth);
256 QPainter p(this);
257 p.setPen(QPen(palette().toolTipText(), 0));
258 p.setBrush(palette().toolTipBase());
259 p.drawRect(r);
260 int w = r.width();
261 int h = r.height();
262 p.setPen(palette().brush(QPalette::Dark).color());
263 p.drawRect(1, 1, w-2, h-2);
264 if (drawShadow) {
265 p.setPen(palette().shadow().color());
266 p.drawPoint(w + 5, 6);
267 p.drawLine(w + 3, 6, w + 5, 8);
268 p.drawLine(w + 1, 6, w + 5, 10);
269 int i;
270 for(i=7; i < h; i += 2)
271 p.drawLine(w, i, w + 5, i + 5);
272 for(i = w - i + h; i > 6; i -= 2)
273 p.drawLine(i, h, i + 5, h + 5);
274 for(; i > 0 ; i -= 2)
275 p.drawLine(6, h + 6 - i, i + 5, h + 5);
276 }
277 r.adjust(0, 0, 1, 1);
278 p.setPen(palette().toolTipText().color());
279 r.adjust(hMargin, vMargin, -hMargin, -vMargin);
280
281 if (doc) {
282 p.translate(r.x(), r.y());
283 QRect rect = r;
284 rect.translate(-r.x(), -r.y());
285 p.setClipRect(rect);
287 context.palette.setBrush(QPalette::Text, context.palette.toolTipText());
288 doc->documentLayout()->draw(&p, context);
289 }
290 else
291 {
293 }
294}
295
296static const char * const button_image[] = {
297"16 16 3 1",
298" c None",
299"o c #000000",
300"a c #000080",
301"o aaaaa ",
302"oo aaa aaa ",
303"ooo aaa aaa",
304"oooo aa aa",
305"ooooo aa aa",
306"oooooo a aaa",
307"ooooooo aaa ",
308"oooooooo aaa ",
309"ooooooooo aaa ",
310"ooooo aaa ",
311"oo ooo ",
312"o ooo aaa ",
313" ooo aaa ",
314" ooo ",
315" ooo ",
316" ooo "};
317
319{
320 public:
324 bool eventFilter(QObject *, QEvent *) override;
325#if QT_CONFIG(action)
326 QPointer<QAction> action;
327#endif // QT_CONFIG(action)
328 static void say(QWidget *, const QString &, int x = 0, int y = 0);
329 static void notifyToplevels(QEvent *e);
331};
332
334{
335 const QWidgetList toplevels = QApplication::topLevelWidgets();
336 for (auto *w : toplevels)
338}
339
341
343 : leaveOnMouseRelease(false)
344{
345 instance = this;
346 qApp->installEventFilter(this);
347
350 QHelpEvent e(QEvent::QueryWhatsThis, w->mapFromGlobal(pos), pos);
351 const bool sentEvent = QCoreApplication::sendEvent(w, &e);
352#ifdef QT_NO_CURSOR
353 Q_UNUSED(sentEvent);
354#else
355 QGuiApplication::setOverrideCursor((!sentEvent || !e.isAccepted())?
357 } else {
359#endif
360 }
361#if QT_CONFIG(accessibility)
362 QAccessibleEvent event(this, QAccessible::ContextHelpStart);
363 QAccessible::updateAccessibility(&event);
364#endif
365}
366
368{
369#if QT_CONFIG(action)
370 if (action)
371 action->setChecked(false);
372#endif // QT_CONFIG(action)
373#ifndef QT_NO_CURSOR
375#endif
376#if QT_CONFIG(accessibility)
377 QAccessibleEvent event(this, QAccessible::ContextHelpEnd);
378 QAccessible::updateAccessibility(&event);
379#endif
380 instance = nullptr;
381}
382
384{
385 if (!o->isWidgetType())
386 return false;
387 QWidget * w = static_cast<QWidget *>(o);
388 bool customWhatsThis = w->testAttribute(Qt::WA_CustomWhatsThis);
389 switch (e->type()) {
391 {
392 QMouseEvent *me = static_cast<QMouseEvent*>(e);
393 if (me->button() == Qt::RightButton || customWhatsThis)
394 return false;
396 if (!QCoreApplication::sendEvent(w, &e) || !e.isAccepted())
397 leaveOnMouseRelease = true;
398
399 } break;
400
402 {
403 QMouseEvent *me = static_cast<QMouseEvent*>(e);
405 const bool sentEvent = QCoreApplication::sendEvent(w, &e);
406#ifdef QT_NO_CURSOR
407 Q_UNUSED(sentEvent);
408#else
409 QGuiApplication::changeOverrideCursor((!sentEvent || !e.isAccepted())?
411#endif
413 }
418 if (static_cast<QMouseEvent*>(e)->button() == Qt::RightButton || customWhatsThis)
419 return false; // ignore RMB release
420 break;
421 case QEvent::KeyPress:
422 {
423 QKeyEvent *kev = static_cast<QKeyEvent *>(e);
424#if QT_CONFIG(shortcut)
425 if (kev->matches(QKeySequence::Cancel)) {
427 return true;
428 } else
429#endif
430 if (customWhatsThis) {
431 return false;
432 } else if (kev->key() == Qt::Key_Menu ||
433 (kev->key() == Qt::Key_F10 &&
434 kev->modifiers() == Qt::ShiftModifier)) {
435 // we don't react to these keys, they are used for context menus
436 return false;
437 } else if (kev->key() != Qt::Key_Shift && kev->key() != Qt::Key_Alt // not a modifier key
438 && kev->key() != Qt::Key_Control && kev->key() != Qt::Key_Meta) {
440 }
441 } break;
442 default:
443 return false;
444 }
445 return true;
446}
447
448#if QT_CONFIG(action)
449class QWhatsThisAction: public QAction
450{
452
453public:
454 explicit QWhatsThisAction(QObject* parent = nullptr);
455
456private slots:
457 void actionTriggered();
458};
459
460QWhatsThisAction::QWhatsThisAction(QObject *parent) : QAction(tr("What's This?"), parent)
461{
462#ifndef QT_NO_IMAGEFORMAT_XPM
464 setIcon(p);
465#endif
466 setCheckable(true);
467 connect(this, SIGNAL(triggered()), this, SLOT(actionTriggered()));
468#ifndef QT_NO_SHORTCUT
470#endif
471}
472
473void QWhatsThisAction::actionTriggered()
474{
475 if (isChecked()) {
477 QWhatsThisPrivate::instance->action = this;
478 }
479}
480#endif // QT_CONFIG(action)
481
494{
496 return;
500 }
501
509{
510 return (QWhatsThisPrivate::instance != nullptr);
511}
512
523{
527}
528
530{
531 if (text.size() == 0)
532 return;
533 // make a fresh widget, and set it up
534 QWhatsThat *whatsThat = new QWhatsThat(text, nullptr, widget);
535
536 // okay, now to find a suitable location
539 if (!screen)
541 QRect screenRect = screen->geometry();
542
543 int w = whatsThat->width();
544 int h = whatsThat->height();
545 int sx = screenRect.x();
546 int sy = screenRect.y();
547
548 // first try locating the widget immediately above/below,
549 // with nice alignment if possible.
550 QPoint pos;
551 if (widget)
552 pos = widget->mapToGlobal(QPoint(0,0));
553
554 if (widget && w > widget->width() + 16)
555 x = pos.x() + widget->width()/2 - w/2;
556 else
557 x = x - w/2;
558
559 // squeeze it in if that would result in part of what's this
560 // being only partially visible
561 if (x + w + shadowWidth > sx+screenRect.width()) {
562 x = (widget ? qMin(screenRect.width(), pos.x() + widget->width())
563 : screenRect.width())
564 - w;
565 }
566
567 if (x < sx)
568 x = sx;
569
570 if (widget && h > widget->height() + 16) {
571 y = pos.y() + widget->height() + 2; // below, two pixels spacing
572 // what's this is above or below, wherever there's most space
573 if (y + h + 10 > sy + screenRect.height())
574 y = pos.y() + 2 - shadowWidth - h; // above, overlap
575 }
576 y = y + 2;
577
578 // squeeze it in if that would result in part of what's this
579 // being only partially visible
580 if (y + h + shadowWidth > sy + screenRect.height()) {
581 y = (widget ? qMin(screenRect.height(), pos.y() + widget->height())
582 : screenRect.height())
583 - h;
584 }
585 if (y < sy)
586 y = sy;
587
588 whatsThat->move(x, y);
589 whatsThat->show();
590 whatsThat->grabKeyboard();
591}
592
601{
603 QWhatsThisPrivate::say(w, text, pos.x(), pos.y());
604}
605
612{
614}
615
623#if QT_CONFIG(action)
624QAction *QWhatsThis::createAction(QObject *parent)
625{
626 return new QWhatsThisAction(parent);
627}
628#endif // QT_CONFIG(action)
629
631
632#include "qwhatsthis.moc"
QString anchorAt(const QPointF &pos) const
Returns the reference of the anchor the given position, or an empty string if no anchor exists at tha...
virtual void draw(QPainter *painter, const PaintContext &context)=0
Draws the layout with the given painter using the given context.
The QAction class provides an abstraction for user commands that can be added to different user inter...
Definition qaction.h:30
static QWidget * widgetAt(const QPoint &p)
Returns the widget at global screen position point, or \nullptr if there is no Qt widget there.
static QWidgetList topLevelWidgets()
Returns a list of the top-level widgets (windows) in the application.
static QFont font()
Returns the default application font.
static bool sendEvent(QObject *receiver, QEvent *event)
Sends event event directly to receiver receiver, using the notify() function.
static QPoint pos()
Returns the position of the cursor (hot spot) of the primary screen in global screen coordinates.
Definition qcursor.cpp:188
\inmodule QtCore
Definition qcoreevent.h:45
@ QueryWhatsThis
Definition qcoreevent.h:169
@ EnterWhatsThisMode
Definition qcoreevent.h:170
@ MouseMove
Definition qcoreevent.h:63
@ KeyPress
Definition qcoreevent.h:64
@ LeaveWhatsThisMode
Definition qcoreevent.h:171
@ MouseButtonPress
Definition qcoreevent.h:60
@ MouseButtonDblClick
Definition qcoreevent.h:62
@ WhatsThis
Definition qcoreevent.h:148
@ MouseButtonRelease
Definition qcoreevent.h:61
QRect boundingRect(QChar) const
Returns the rectangle that is covered by ink if character ch were to be drawn at the origin of the co...
static QPlatformTheme * platformTheme()
QScreen * primaryScreen
the primary (or default) screen of the application.
static void changeOverrideCursor(const QCursor &)
Changes the currently active application override cursor to cursor.
static void setOverrideCursor(const QCursor &)
Sets the application override cursor to cursor.
static void restoreOverrideCursor()
Undoes the last setOverrideCursor().
static QScreen * screenAt(const QPoint &point)
Returns the screen at point, or \nullptr if outside of any screen.
The QHelpEvent class provides an event that is used to request helpful information about a particular...
Definition qevent.h:787
The QKeyEvent class describes a key event.
Definition qevent.h:423
Qt::KeyboardModifiers modifiers() const
Returns the keyboard modifier flags that existed immediately after the event occurred.
Definition qevent.cpp:1465
int key() const
Returns the code of the key that was pressed or released.
Definition qevent.h:433
\inmodule QtGui
Definition qevent.h:195
\inmodule QtCore
Definition qobject.h:90
QObject * parent() const
Returns a pointer to the parent object.
Definition qobject.h:311
static QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
\threadsafe
Definition qobject.cpp:2823
The QPaintEvent class contains event parameters for paint events.
Definition qevent.h:485
The QPainter class performs low-level painting on widgets and other paint devices.
Definition qpainter.h:46
\inmodule QtGui
Definition qpen.h:25
Returns a copy of the pixmap that is transformed using the given transformation transform and transfo...
Definition qpixmap.h:27
The QPlatformTheme class allows customizing the UI based on themes.
constexpr QPoint toPoint() const
Rounds the coordinates of this point to the nearest integer, and returns a QPoint object with the rou...
Definition qpoint.h:394
\inmodule QtCore\reentrant
Definition qpoint.h:23
\inmodule QtCore
Definition qpointer.h:18
\inmodule QtCore\reentrant
Definition qrect.h:30
constexpr int height() const noexcept
Returns the height of the rectangle.
Definition qrect.h:238
constexpr int x() const noexcept
Returns the x-coordinate of the rectangle's left edge.
Definition qrect.h:184
constexpr void translate(int dx, int dy) noexcept
Moves the rectangle dx along the x axis and dy along the y axis, relative to the current position.
Definition qrect.h:244
constexpr int width() const noexcept
Returns the width of the rectangle.
Definition qrect.h:235
constexpr int y() const noexcept
Returns the y-coordinate of the rectangle's top edge.
Definition qrect.h:187
The QScreen class is used to query screen properties. \inmodule QtGui.
Definition qscreen.h:32
QRect geometry
the screen's geometry in pixels
Definition qscreen.h:45
QRect virtualGeometry
the pixel geometry of the virtual desktop to which this screen belongs
Definition qscreen.h:47
QPointF globalPosition() const
Returns the position of the point in this event on the screen or virtual desktop.
Definition qevent.h:122
QPointF position() const
Returns the position of the point in this event, relative to the widget or item that received the eve...
Definition qevent.h:118
Qt::MouseButton button() const
Returns the button that caused the event.
Definition qevent.h:115
constexpr QSize toSize() const noexcept
Returns an integer based copy of this size.
Definition qsize.h:390
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:127
void clear()
Clears the contents of the string and makes it null.
Definition qstring.h:1107
qsizetype size() const
Returns the number of characters in this string.
Definition qstring.h:182
bool isEmpty() const
Returns true if the string has no characters; otherwise returns false.
Definition qstring.h:1083
\reentrant \inmodule QtGui
void setHtml(const QString &html)
Replaces the entire contents of the document with the given HTML-formatted text in the html string.
QAbstractTextDocumentLayout * documentLayout() const
Returns the document layout for this document.
QSizeF size
the actual size of the document. This is equivalent to documentLayout()->documentSize();
void setDefaultFont(const QFont &font)
Sets the default font to use in the document layout.
void setUndoRedoEnabled(bool enable)
void setPlainText(const QString &text)
Replaces the entire contents of the document with the given plain text.
void keyPressEvent(QKeyEvent *) override
This event handler, for event event, can be reimplemented in a subclass to receive key press events f...
QWhatsThat(const QString &txt, QWidget *parent, QWidget *showTextFor)
void mouseReleaseEvent(QMouseEvent *) override
This event handler, for event event, can be reimplemented in a subclass to receive mouse release even...
void mouseMoveEvent(QMouseEvent *) override
This event handler, for event event, can be reimplemented in a subclass to receive mouse move events ...
void mousePressEvent(QMouseEvent *) override
This event handler, for event event, can be reimplemented in a subclass to receive mouse press events...
void paintEvent(QPaintEvent *) override
This event handler can be reimplemented in a subclass to receive paint events passed in event.
static QWhatsThat * instance
static void say(QWidget *, const QString &, int x=0, int y=0)
static QWhatsThisPrivate * instance
static void notifyToplevels(QEvent *e)
bool eventFilter(QObject *, QEvent *) override
Filters events if this object has been installed as an event filter for the watched object.
static void enterWhatsThisMode()
This function switches the user interface into "What's This?" mode.
static void leaveWhatsThisMode()
If the user interface is in "What's This?" mode, this function switches back to normal mode; otherwis...
static void showText(const QPoint &pos, const QString &text, QWidget *w=nullptr)
Shows text as a "What's This?" window, at global position pos.
static bool inWhatsThisMode()
Returns true if the user interface is in "What's This?" mode; otherwise returns false.
static void hideText()
If a "What's This?" window is showing, this destroys it.
The QWidget class is the base class of all user interface objects.
Definition qwidget.h:99
void setAttribute(Qt::WidgetAttribute, bool on=true)
Sets the attribute attribute on this widget if on is true; otherwise clears the attribute.
void grabKeyboard()
Grabs the keyboard input.
QPointF mapToGlobal(const QPointF &) const
Translates the widget coordinate pos to global screen coordinates.
void setPalette(const QPalette &)
Definition qwidget.cpp:4537
QPalette palette
the widget's palette
Definition qwidget.h:132
int width
the width of the widget excluding any window frame
Definition qwidget.h:114
void setMouseTracking(bool enable)
Definition qwidget.h:853
bool close()
Closes this widget.
Definition qwidget.cpp:8608
void move(int x, int y)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition qwidget.h:880
QFontMetrics fontMetrics() const
Returns the font metrics for the widget's current font.
Definition qwidget.h:847
void setFocusPolicy(Qt::FocusPolicy policy)
Definition qwidget.cpp:7904
int height
the height of the widget excluding any window frame
Definition qwidget.h:115
QRect rect
the internal geometry of the widget excluding any window frame
Definition qwidget.h:116
void show()
Shows the widget and its child widgets.
Definition qwidget.cpp:7956
void ensurePolished() const
Ensures that the widget and its children have been polished by QStyle (i.e., have a proper font and p...
void resize(int w, int h)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition qwidget.h:883
QScreen * screen() const
Returns the screen the widget is on.
Definition qwidget.cpp:2503
void setCursor(const QCursor &)
Definition qwidget.cpp:4967
bool testAttribute(Qt::WidgetAttribute) const
Returns true if attribute attribute is set on this widget; otherwise returns false.
Definition qwidget.h:910
QOpenGLWidget * widget
[1]
QString text
QPushButton * button
[2]
double e
Combined button and popup list for selecting options.
@ AlignTop
Definition qnamespace.h:152
@ AlignLeft
Definition qnamespace.h:143
@ LeftButton
Definition qnamespace.h:57
@ RightButton
Definition qnamespace.h:58
@ WA_CustomWhatsThis
Definition qnamespace.h:312
@ WA_NoSystemBackground
Definition qnamespace.h:290
@ WA_DeleteOnClose
Definition qnamespace.h:320
@ StrongFocus
Definition qnamespace.h:109
@ TextWordWrap
Definition qnamespace.h:173
@ TextExpandTabs
Definition qnamespace.h:171
@ PointingHandCursor
@ WhatsThisCursor
@ ArrowCursor
@ ForbiddenCursor
@ Key_Shift
Definition qnamespace.h:678
@ Key_Control
Definition qnamespace.h:679
@ Key_Alt
Definition qnamespace.h:681
@ Key_Meta
Definition qnamespace.h:680
@ Key_F1
Definition qnamespace.h:685
@ Key_Menu
Definition qnamespace.h:722
@ Key_F10
Definition qnamespace.h:694
@ ShiftModifier
Q_GUI_EXPORT bool mightBeRichText(const QString &)
Returns true if the string text is likely to be rich text; otherwise returns false.
Definition brush.cpp:5
static void * context
#define Q_FALLTHROUGH()
#define qApp
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
constexpr const T & qMin(const T &a, const T &b)
Definition qminmax.h:40
void qDeleteInEventHandler(QObject *o)
Definition qobject.cpp:4876
#define SLOT(a)
Definition qobjectdefs.h:51
#define SIGNAL(a)
Definition qobjectdefs.h:52
static bool contains(const QJsonArray &haystack, unsigned needle)
Definition qopengl.cpp:116
GLint GLint GLint GLint GLint x
[0]
GLfloat GLfloat GLfloat w
[0]
GLboolean GLboolean GLboolean GLboolean a
[7]
GLboolean r
[2]
GLint y
GLfloat GLfloat GLfloat GLfloat h
struct _cl_event * event
GLfloat GLfloat p
[1]
QScreen * screen
[1]
Definition main.cpp:29
#define tr(X)
#define Q_OBJECT
#define slots
#define Q_UNUSED(x)
static const int hMargin
static const char *const button_image[]
static bool dropShadow()
static int shadowWidth
static const int vMargin
Q_CORE_EXPORT void qDeleteInEventHandler(QObject *o)
Definition qobject.cpp:4876
Text files * txt
myAction setIcon(SomeIcon)
button setShortcut(tr("Alt+F7"))
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent