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
qplatformtheme.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 "qplatformtheme.h"
5
6#include "qplatformtheme_p.h"
7
8#include <QtCore/QVariant>
9#include <QtCore/QStringList>
10#include <QtCore/qfileinfo.h>
11#include <qicon.h>
12#include <qpalette.h>
13#include <qtextformat.h>
14#include <private/qiconloader_p.h>
15#include <private/qguiapplication_p.h>
16#include <qpa/qplatformintegration.h>
17#include <qpa/qplatformdialoghelper.h>
18
19#include <algorithm>
20
22
160#if QT_CONFIG(shortcut)
161// Table of key bindings. It must be sorted on key sequence:
162// The integer value of VK_KEY | Modifier Keys (e.g., VK_META, and etc.)
163// A priority of 1 indicates that this is the primary key binding when multiple are defined.
164
165enum KeyPlatform {
167 KB_Mac = (1 << QPlatformTheme::MacKeyboardScheme),
168 KB_X11 = (1 << QPlatformTheme::X11KeyboardScheme),
169 KB_KDE = (1 << QPlatformTheme::KdeKeyboardScheme),
170 KB_Gnome = (1 << QPlatformTheme::GnomeKeyboardScheme),
171 KB_CDE = (1 << QPlatformTheme::CdeKeyboardScheme),
172 KB_All = 0xffff
173};
174
175const QKeyBinding QPlatformThemePrivate::keyBindings[] = {
176 // StandardKey Priority Key Sequence Platforms
178 {QKeySequence::HelpContents, 0, Qt::Key_F1, KB_Win | KB_X11},
180 {QKeySequence::Open, 1, Qt::CTRL | Qt::Key_O, KB_All},
183 {QKeySequence::Close, 1, Qt::CTRL | Qt::Key_W, KB_Mac},
184 {QKeySequence::Close, 0, Qt::CTRL | Qt::Key_W, KB_Win | KB_X11},
185 {QKeySequence::Save, 1, Qt::CTRL | Qt::Key_S, KB_All},
186 {QKeySequence::New, 1, Qt::CTRL | Qt::Key_N, KB_All},
187 {QKeySequence::Delete, 0, Qt::CTRL | Qt::Key_D, KB_X11}, //emacs (line edit only)
190 {QKeySequence::Cut, 1, Qt::CTRL | Qt::Key_X, KB_All},
191 {QKeySequence::Cut, 0, Qt::SHIFT | Qt::Key_Delete, KB_Win | KB_X11}, //## Check if this should work on mac
192 {QKeySequence::Cut, 0, Qt::Key_F20, KB_X11}, //Cut on sun keyboards
193 {QKeySequence::Cut, 0, Qt::META | Qt::Key_K, KB_Mac},
194 {QKeySequence::Copy, 0, Qt::CTRL | Qt::Key_Insert, KB_X11 | KB_Win},
195 {QKeySequence::Copy, 1, Qt::CTRL | Qt::Key_C, KB_All},
196 {QKeySequence::Copy, 0, Qt::Key_F16, KB_X11}, //Copy on sun keyboards
198 {QKeySequence::Paste, 1, Qt::CTRL | Qt::Key_V, KB_All},
199 {QKeySequence::Paste, 0, Qt::SHIFT | Qt::Key_Insert, KB_Win | KB_X11},
200 {QKeySequence::Paste, 0, Qt::Key_F18, KB_X11}, //Paste on sun keyboards
201 {QKeySequence::Paste, 0, Qt::META | Qt::Key_Y, KB_Mac},
203 {QKeySequence::Undo, 1, Qt::CTRL | Qt::Key_Z, KB_All},
204 {QKeySequence::Undo, 0, Qt::Key_F14, KB_X11}, //Undo on sun keyboards
207 {QKeySequence::Redo, 0, Qt::CTRL | Qt::SHIFT | Qt::Key_Z, KB_Win | KB_X11},
208 {QKeySequence::Redo, 1, Qt::CTRL | Qt::Key_Y, KB_Win},
209 {QKeySequence::Back, 1, Qt::ALT | Qt::Key_Left, KB_Win | KB_X11},
213 {QKeySequence::Forward, 1, Qt::ALT | Qt::Key_Right, KB_Win | KB_X11},
217 {QKeySequence::Refresh, 1, Qt::CTRL | Qt::Key_R, KB_Gnome | KB_Mac},
218 {QKeySequence::Refresh, 0, Qt::Key_F5, KB_Win | KB_X11},
221 {QKeySequence::Print, 1, Qt::CTRL | Qt::Key_P, KB_All},
225 {QKeySequence::NextChild, 0, Qt::CTRL | Qt::Key_Tab, KB_Mac}, //different priority from above
226 {QKeySequence::NextChild, 1, Qt::CTRL | Qt::Key_Tab, KB_Win | KB_X11},
231 {QKeySequence::PreviousChild, 0, Qt::CTRL | Qt::SHIFT | Qt::Key_Backtab, KB_Mac },//different priority from above
236 {QKeySequence::Find, 0, Qt::CTRL | Qt::Key_F, KB_All},
238 {QKeySequence::FindNext, 1, Qt::CTRL | Qt::Key_G, KB_Gnome | KB_Mac},
242 {QKeySequence::FindPrevious, 1, Qt::CTRL | Qt::SHIFT | Qt::Key_G, KB_Gnome | KB_Mac},
246 {QKeySequence::Replace, 0, Qt::CTRL | Qt::Key_H, KB_Gnome},
249 {QKeySequence::Bold, 1, Qt::CTRL | Qt::Key_B, KB_All},
257 {QKeySequence::MoveToNextWord, 0, Qt::CTRL | Qt::Key_Right, KB_Win | KB_X11},
275 {QKeySequence::MoveToStartOfLine, 0, Qt::Key_Home, KB_Win | KB_X11},
278 {QKeySequence::MoveToEndOfLine, 0, Qt::Key_End, KB_Win | KB_X11},
281 {QKeySequence::MoveToStartOfBlock, 1, Qt::ALT | Qt::Key_Up, KB_Mac}, //mac only
283 {QKeySequence::MoveToEndOfBlock, 1, Qt::ALT | Qt::Key_Down, KB_Mac}, //mac only
305 {QKeySequence::SelectEndOfLine, 0, Qt::SHIFT | Qt::Key_End, KB_Win | KB_X11},
320 {QKeySequence::DeleteEndOfLine, 0, Qt::CTRL | Qt::Key_K, KB_X11}, //emacs (line edit only)
330 {QKeySequence::Quit, 0, Qt::CTRL | Qt::Key_Q, KB_X11 | KB_Gnome | KB_KDE | KB_Mac},
335 {QKeySequence::FullScreen, 1, Qt::Key_F11, KB_Win | KB_KDE},
342};
343
344const uint QPlatformThemePrivate::numberOfKeyBindings = sizeof(QPlatformThemePrivate::keyBindings)/(sizeof(QKeyBinding));
345#endif
346
350
355
357{
359 const bool darkAppearance = theme
360 ? theme->colorScheme() == Qt::ColorScheme::Dark
361 : false;
362 const QColor windowText = darkAppearance ? QColor(240, 240, 240) : Qt::black;
363 const QColor backGround = darkAppearance ? QColor(50, 50, 50) : QColor(239, 239, 239);
364 const QColor light = backGround.lighter(150);
365 const QColor mid = (backGround.darker(130));
366 const QColor midLight = mid.lighter(110);
367 const QColor base = darkAppearance ? backGround.darker(140) : Qt::white;
368 const QColor disabledBase(backGround);
369 const QColor dark = backGround.darker(150);
370 const QColor darkDisabled = QColor(209, 209, 209).darker(110);
371 const QColor text = darkAppearance ? windowText : Qt::black;
372 const QColor highlight = QColor(48, 140, 198);
373 const QColor hightlightedText = darkAppearance ? windowText : Qt::white;
374 const QColor disabledText = darkAppearance ? QColor(130, 130, 130) : QColor(190, 190, 190);
375 const QColor button = backGround;
376 const QColor shadow = dark.darker(135);
377 const QColor disabledShadow = shadow.lighter(150);
378 const QColor disabledHighlight(145, 145, 145);
379 QColor placeholder = text;
380 placeholder.setAlpha(128);
381
382 QPalette fusionPalette(windowText, backGround, light, dark, mid, text, base);
383 fusionPalette.setBrush(QPalette::Midlight, midLight);
384 fusionPalette.setBrush(QPalette::Button, button);
385 fusionPalette.setBrush(QPalette::Shadow, shadow);
386 fusionPalette.setBrush(QPalette::HighlightedText, hightlightedText);
387
388 fusionPalette.setBrush(QPalette::Disabled, QPalette::Text, disabledText);
389 fusionPalette.setBrush(QPalette::Disabled, QPalette::WindowText, disabledText);
390 fusionPalette.setBrush(QPalette::Disabled, QPalette::ButtonText, disabledText);
391 fusionPalette.setBrush(QPalette::Disabled, QPalette::Base, disabledBase);
392 fusionPalette.setBrush(QPalette::Disabled, QPalette::Dark, darkDisabled);
393 fusionPalette.setBrush(QPalette::Disabled, QPalette::Shadow, disabledShadow);
394
395 fusionPalette.setBrush(QPalette::Active, QPalette::Highlight, highlight);
396 fusionPalette.setBrush(QPalette::Inactive, QPalette::Highlight, highlight);
397 fusionPalette.setBrush(QPalette::Disabled, QPalette::Highlight, disabledHighlight);
398
399 fusionPalette.setBrush(QPalette::Active, QPalette::Accent, highlight);
400 fusionPalette.setBrush(QPalette::Inactive, QPalette::Accent, highlight);
401 fusionPalette.setBrush(QPalette::Disabled, QPalette::Accent, disabledHighlight);
402
403 fusionPalette.setBrush(QPalette::PlaceholderText, placeholder);
404
405 // Use a more legible light blue on dark backgrounds than the default Qt::blue.
406 if (darkAppearance)
407 fusionPalette.setBrush(QPalette::Link, highlight);
408
409 return fusionPalette;
410}
411
417
423
427
432
434{
435 Q_UNUSED(type);
436 return false;
437}
438
444
449
454
456{
457 Q_D(const QPlatformTheme);
459 if (!d->systemPalette)
460 const_cast<QPlatformTheme *>(this)->d_ptr->initializeSystemPalette();
461 return d->systemPalette;
462 }
463 return nullptr;
464}
465
467{
468 Q_UNUSED(type);
469 return nullptr;
470}
471
473{
474 Q_UNUSED(sp);
475 Q_UNUSED(size);
476 // TODO Should return QCommonStyle pixmaps?
477 return QPixmap();
478}
479
490QIcon QPlatformTheme::fileIcon(const QFileInfo &fileInfo, QPlatformTheme::IconOptions iconOptions) const
491{
492 Q_UNUSED(fileInfo);
493 Q_UNUSED(iconOptions);
494 // TODO Should return QCommonStyle pixmaps?
495 return QIcon();
496}
497
499{
500 // For theme hints which mirror platform integration style hints, query
501 // the platform integration. The base QPlatformIntegration::styleHint()
502 // function will in turn query QPlatformTheme::defaultThemeHint() if there
503 // is no custom value.
504 switch (hint) {
541 default:
543 }
544}
545
547{
548 switch (hint) {
550 return QVariant(1000);
552 return QVariant(400);
554 return QVariant(30);
556 return QVariant(400);
558 return QVariant(10);
560 return QVariant(500);
562 return QVariant(int(0));
564 return QVariant(QChar(u'\x25CF'));
566 return QVariant(int(0)); // no limit
568 return QVariant(false);
570 return QVariant(false);
572 return QVariant(int(0));
574 return QVariant(false);
576 return QVariant(false);
578 return QVariant(int(Qt::ToolButtonIconOnly));
580 return QVariant(int(0));
583 return QVariant(QString());
585 return QVariant(QStringList());
587 return QVariant(QStringList());
589 return QVariant(QStringList());
591 return QVariant(true);
592 case TextCursorWidth:
593 return QVariant(1);
594 case DropShadow:
595 return QVariant(false);
597 return QVariant(-1);
598 case KeyboardScheme:
599 return QVariant(int(WindowsKeyboardScheme));
600 case UiEffects:
601 return QVariant(int(0));
604 case TabFocusBehavior:
606 case IconPixmapSizes:
607 return QVariant::fromValue(QList<int>());
610 return QVariant(false);
612 return QVariant(800);
614 {
615 bool ok = false;
616 const int dist = qEnvironmentVariableIntValue("QT_DBL_CLICK_DIST", &ok);
617 return QVariant(ok ? dist : 5);
618 }
619 case WheelScrollLines:
620 return QVariant(3);
622 {
623 bool ok = false;
624 int dist = qEnvironmentVariableIntValue("QT_DBL_TAP_DIST", &ok);
625 if (!ok)
627 return QVariant(ok ? dist : 10);
628 }
630 return QVariant(10);
632 return true;
634 return true;
636 return false;
637 case ButtonPressKeys:
638 return QVariant::fromValue(QList<Qt::Key>({ Qt::Key_Space, Qt::Key_Select }));
640 return false;
642 return QVariant(15);
644 return QVariant(2500);
646 return QVariant(1500);
648 return false;
649 case MouseCursorTheme:
650 return QVariant(QString());
651 case MouseCursorSize:
652 return QVariant(QSize(16, 16));
654 return true;
655 }
656
657 return QVariant();
658}
659
661{
662 return nullptr;
663}
664
666{
667 return nullptr;
668}
669
671{
672 return nullptr;
673}
674
675#ifndef QT_NO_SYSTEMTRAYICON
684#endif
685
697{
698 return new QIconLoaderEngine(iconName);
699}
700
701#if QT_CONFIG(shortcut)
702// mixed-mode predicate: all of these overloads are actually needed (but not all for every compiler)
703struct ByStandardKey {
704 typedef bool result_type;
705
706 bool operator()(QKeySequence::StandardKey lhs, QKeySequence::StandardKey rhs) const
707 { return lhs < rhs; }
708
709 bool operator()(const QKeyBinding& lhs, const QKeyBinding& rhs) const
710 { return operator()(lhs.standardKey, rhs.standardKey); }
711
712 bool operator()(QKeySequence::StandardKey lhs, const QKeyBinding& rhs) const
713 { return operator()(lhs, rhs.standardKey); }
714
715 bool operator()(const QKeyBinding& lhs, QKeySequence::StandardKey rhs) const
716 { return operator()(lhs.standardKey, rhs); }
717};
718
724QList<QKeySequence> QPlatformTheme::keyBindings(QKeySequence::StandardKey key) const
725{
727 QList <QKeySequence> list;
728
729 std::pair<const QKeyBinding *, const QKeyBinding *> range =
730 std::equal_range(QPlatformThemePrivate::keyBindings,
731 QPlatformThemePrivate::keyBindings + QPlatformThemePrivate::numberOfKeyBindings,
732 key, ByStandardKey());
733
734 for (const QKeyBinding *it = range.first; it < range.second; ++it) {
735 if (!(it->platform & platform))
736 continue;
737
738 uint shortcut = it->shortcut.toCombined();
739
740 if (it->priority > 0)
742 else
744 }
745
746 return list;
747}
748#endif
749
761
762#if QT_CONFIG(shortcut)
770QKeySequence QPlatformTheme::standardButtonShortcut(int button) const
771{
773 return QKeySequence();
774}
775#endif // QT_CONFIG(shortcut)
776
778{
779 switch (button) {
781 return QCoreApplication::translate("QPlatformTheme", "OK");
783 return QCoreApplication::translate("QPlatformTheme", "Save");
785 return QCoreApplication::translate("QPlatformTheme", "Save All");
787 return QCoreApplication::translate("QPlatformTheme", "Open");
789 return QCoreApplication::translate("QPlatformTheme", "&Yes");
791 return QCoreApplication::translate("QPlatformTheme", "Yes to &All");
793 return QCoreApplication::translate("QPlatformTheme", "&No");
795 return QCoreApplication::translate("QPlatformTheme", "N&o to All");
797 return QCoreApplication::translate("QPlatformTheme", "Abort");
799 return QCoreApplication::translate("QPlatformTheme", "Retry");
801 return QCoreApplication::translate("QPlatformTheme", "Ignore");
803 return QCoreApplication::translate("QPlatformTheme", "Close");
805 return QCoreApplication::translate("QPlatformTheme", "Cancel");
807 return QCoreApplication::translate("QPlatformTheme", "Discard");
809 return QCoreApplication::translate("QPlatformTheme", "Help");
811 return QCoreApplication::translate("QPlatformTheme", "Apply");
813 return QCoreApplication::translate("QPlatformTheme", "Reset");
815 return QCoreApplication::translate("QPlatformTheme", "Restore Defaults");
816 default:
817 break;
818 }
819 return QString();
820}
821
823{
824 const auto mnemonicInParentheses = [](QStringView text) {
825 /* Format of mnemonics to remove is /\‍(&[^&]\‍)/ but accept full-width
826 forms of ( and ) as equivalent, for cross-platform compatibility with
827 MS (and consequent behavior of translators, see QTBUG-110829).
828 */
829 Q_ASSERT(text.size() == 4); // Caller's responsibility.
830 constexpr QChar wideOpen = u'\uff08', wideClose = u'\uff09';
831 if (!text.startsWith(u'(') && !text.startsWith(wideOpen))
832 return false;
833 if (text[1] != u'&' || text[2] == u'&')
834 return false;
835 return text.endsWith(u')') || text.endsWith(wideClose);
836 };
837 QString returnText(original.size(), u'\0');
838 int finalDest = 0;
839 QStringView text(original);
840 while (!text.isEmpty()) {
841 if (text.startsWith(u'&')) {
842 text = text.sliced(1);
843 if (text.isEmpty())
844 break;
845 } else if (text.size() >= 4 && mnemonicInParentheses(text.first(4))) {
846 // Advance over the matched mnemonic:
847 text = text.sliced(4);
848 // Also strip any leading space before it:
849 while (finalDest > 0 && returnText.at(finalDest - 1).isSpace())
850 --finalDest;
851 continue;
852 }
853 returnText[finalDest] = text.front();
854 text = text.sliced(1);
855 ++finalDest;
856 }
857 returnText.truncate(finalDest);
858 return returnText;
859}
860
862{
863 const uint keyboardScheme = QGuiApplicationPrivate::platformTheme()->themeHint(QPlatformTheme::KeyboardScheme).toInt();
864 unsigned result = 1u << keyboardScheme;
865#if QT_CONFIG(shortcut)
866 if (keyboardScheme == QPlatformTheme::KdeKeyboardScheme
867 || keyboardScheme == QPlatformTheme::GnomeKeyboardScheme
868 || keyboardScheme == QPlatformTheme::CdeKeyboardScheme)
869 result |= KB_X11;
870#endif
871 return result;
872}
873
875{
876 return d_func()->name;
877}
878
880
881#include "moc_qplatformtheme.cpp"
\inmodule QtCore
The QColor class provides colors based on RGB, HSV or CMYK values.
Definition qcolor.h:31
QColor darker(int f=200) const noexcept
Definition qcolor.cpp:2857
void setAlpha(int alpha)
Sets the alpha of this color to alpha.
Definition qcolor.cpp:1481
QColor lighter(int f=150) const noexcept
Definition qcolor.cpp:2812
static QString translate(const char *context, const char *key, const char *disambiguation=nullptr, int n=-1)
\threadsafe
\reentrant
Definition qfont.h:22
static QPlatformIntegration * platformIntegration()
static QPlatformTheme * platformTheme()
The QIconEngine class provides an abstract base class for QIcon renderers.
Definition qiconengine.h:15
An icon engine based on icon entries collected by QIconLoader.
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.
void prepend(rvalue_ref t)
Definition qlist.h:473
void append(parameter_type t)
Definition qlist.h:458
The QPalette class contains color groups for each widget state.
Definition qpalette.h:19
@ Inactive
Definition qpalette.h:49
@ Disabled
Definition qpalette.h:49
@ HighlightedText
Definition qpalette.h:53
@ ButtonText
Definition qpalette.h:52
@ WindowText
Definition qpalette.h:51
@ Highlight
Definition qpalette.h:53
@ PlaceholderText
Definition qpalette.h:58
@ Midlight
Definition qpalette.h:51
Returns a copy of the pixmap that is transformed using the given transformation transform and transfo...
Definition qpixmap.h:27
The QPlatformDialogHelper class allows for platform-specific customization of dialogs.
static unsigned currentKeyPlatforms()
The QPlatformTheme class allows customizing the UI based on themes.
virtual QPlatformMenuItem * createPlatformMenuItem() const
virtual Qt::ColorScheme colorScheme() const
virtual const QPalette * palette(Palette type=SystemPalette) const
virtual QPixmap standardPixmap(StandardPixmap sp, const QSizeF &size) const
virtual const QFont * font(Font type=SystemFont) const
virtual QPlatformMenuBar * createPlatformMenuBar() const
virtual QIcon fileIcon(const QFileInfo &fileInfo, QPlatformTheme::IconOptions iconOptions={ }) const
Return an icon for fileInfo, observing iconOptions.
virtual QVariant themeHint(ThemeHint hint) const
virtual QIconEngine * createIconEngine(const QString &iconName) const
Factory function for the QIconEngine used by QIcon::fromTheme().
virtual QPlatformSystemTrayIcon * createPlatformSystemTrayIcon() const
Factory function for QSystemTrayIcon.
virtual QPlatformDialogHelper * createPlatformDialogHelper(DialogType type) const
virtual QPlatformMenu * createPlatformMenu() const
QString name() const
static QString defaultStandardButtonText(int button)
virtual ~QPlatformTheme()
static QString removeMnemonics(const QString &original)
virtual QString standardButtonText(int button) const
Returns the text of a standard button.
virtual bool usePlatformNativeDialog(DialogType type) const
static QVariant defaultThemeHint(ThemeHint hint)
virtual void requestColorScheme(Qt::ColorScheme scheme)
ThemeHint
This enum describes the available theme hints.
@ DialogButtonBoxButtonsHaveIcons
@ ItemViewActivateItemOnSingleClick
QScopedPointer< QPlatformThemePrivate > d_ptr
\inmodule QtCore
Definition qsize.h:208
\inmodule QtCore
Definition qsize.h:25
\inmodule QtCore
Definition qstringview.h:78
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
bool startsWith(const QString &s, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
Returns true if the string starts with s; otherwise returns false.
Definition qstring.cpp:5455
QString sliced(qsizetype pos) const &
Definition qstring.h:394
void truncate(qsizetype pos)
Truncates the string at the given position index.
Definition qstring.cpp:6319
bool isEmpty() const noexcept
Returns true if the string has no characters; otherwise returns false.
Definition qstring.h:192
qsizetype size() const noexcept
Returns the number of characters in this string.
Definition qstring.h:186
QString first(qsizetype n) const &
Definition qstring.h:390
QChar front() const
Definition qstring.h:230
bool endsWith(const QString &s, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
Returns true if the string ends with s; otherwise returns false.
Definition qstring.cpp:5506
\inmodule QtCore
Definition qvariant.h:65
static auto fromValue(T &&value) noexcept(std::is_nothrow_copy_constructible_v< T > &&Private::CanUseInternalSpace< T >) -> std::enable_if_t< std::conjunction_v< std::is_copy_constructible< T >, std::is_destructible< T > >, QVariant >
Definition qvariant.h:536
QString text
QPushButton * button
[2]
QSet< QString >::iterator it
Combined button and popup list for selecting options.
ColorScheme
Definition qnamespace.h:50
@ CTRL
@ META
@ SHIFT
@ ALT
@ TabFocusAllControls
Definition qnamespace.h:118
@ white
Definition qnamespace.h:31
@ black
Definition qnamespace.h:30
@ Key_Escape
Definition qnamespace.h:663
@ Key_F20
Definition qnamespace.h:709
@ Key_O
Definition qnamespace.h:561
@ Key_Tab
Definition qnamespace.h:664
@ Key_C
Definition qnamespace.h:549
@ Key_Select
@ Key_B
Definition qnamespace.h:548
@ Key_Plus
Definition qnamespace.h:525
@ Key_Return
Definition qnamespace.h:667
@ Key_Right
Definition qnamespace.h:679
@ Key_Enter
Definition qnamespace.h:668
@ Key_K
Definition qnamespace.h:557
@ Key_PageUp
Definition qnamespace.h:681
@ Key_Space
Definition qnamespace.h:513
@ Key_D
Definition qnamespace.h:550
@ Key_I
Definition qnamespace.h:555
@ Key_U
Definition qnamespace.h:567
@ Key_Backspace
Definition qnamespace.h:666
@ Key_Backtab
Definition qnamespace.h:665
@ Key_F6
Definition qnamespace.h:695
@ Key_Insert
Definition qnamespace.h:669
@ Key_BracketRight
Definition qnamespace.h:575
@ Key_Left
Definition qnamespace.h:677
@ Key_X
Definition qnamespace.h:570
@ Key_BracketLeft
Definition qnamespace.h:573
@ Key_A
Definition qnamespace.h:547
@ Key_Question
Definition qnamespace.h:545
@ Key_R
Definition qnamespace.h:564
@ Key_F11
Definition qnamespace.h:700
@ Key_P
Definition qnamespace.h:562
@ Key_Up
Definition qnamespace.h:678
@ Key_Minus
Definition qnamespace.h:527
@ Key_F3
Definition qnamespace.h:692
@ Key_Q
Definition qnamespace.h:563
@ Key_F16
Definition qnamespace.h:705
@ Key_Down
Definition qnamespace.h:680
@ Key_T
Definition qnamespace.h:566
@ Key_F18
Definition qnamespace.h:707
@ Key_V
Definition qnamespace.h:568
@ Key_F4
Definition qnamespace.h:693
@ Key_G
Definition qnamespace.h:553
@ Key_Delete
Definition qnamespace.h:670
@ Key_Forward
Definition qnamespace.h:847
@ Key_H
Definition qnamespace.h:554
@ Key_W
Definition qnamespace.h:569
@ Key_F1
Definition qnamespace.h:690
@ Key_F14
Definition qnamespace.h:703
@ Key_Period
Definition qnamespace.h:528
@ Key_Z
Definition qnamespace.h:572
@ Key_PageDown
Definition qnamespace.h:682
@ Key_F5
Definition qnamespace.h:694
@ Key_Back
Definition qnamespace.h:846
@ Key_Home
Definition qnamespace.h:675
@ Key_F
Definition qnamespace.h:552
@ Key_BraceRight
Definition qnamespace.h:581
@ Key_N
Definition qnamespace.h:560
@ Key_Comma
Definition qnamespace.h:526
@ Key_S
Definition qnamespace.h:565
@ Key_BraceLeft
Definition qnamespace.h:579
@ Key_Y
Definition qnamespace.h:571
@ Key_E
Definition qnamespace.h:551
@ Key_End
Definition qnamespace.h:676
@ ToolButtonIconOnly
QList< QString > QStringList
Constructs a string list that contains the given string, str.
static const QMetaObjectPrivate * priv(const uint *data)
GLuint64 key
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLsizei range
GLenum type
GLuint64EXT * result
[6]
Q_GUI_EXPORT QPalette qt_fusionPalette()
#define Q_ASSERT(cond)
Definition qrandom.cpp:47
static QT_BEGIN_NAMESPACE QVariant hint(QPlatformIntegration::StyleHint h)
#define sp
Q_CORE_EXPORT int qEnvironmentVariableIntValue(const char *varName, bool *ok=nullptr) noexcept
#define Q_UNUSED(x)
unsigned int uint
Definition qtypes.h:34
static const uint base
Definition qurlidna.cpp:20
QT_BEGIN_NAMESPACE Platform platform()
QList< int > list
[14]
std::uniform_real_distribution dist(1, 2.5)
[2]
QObject::connect nullptr
QKeySequence::StandardKey standardKey