Qt 6.x
The Qt SDK
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)
328 {QKeySequence::SaveAs, 0, Qt::CTRL | Qt::SHIFT | Qt::Key_S, KB_Gnome | KB_Mac},
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},
341};
342
343const uint QPlatformThemePrivate::numberOfKeyBindings = sizeof(QPlatformThemePrivate::keyBindings)/(sizeof(QKeyBinding));
344#endif
345
347 : systemPalette(nullptr)
348{ }
349
351{
352 delete systemPalette;
353}
354
356{
358 const bool darkAppearance = theme
359 ? theme->colorScheme() == Qt::ColorScheme::Dark
360 : false;
361 const QColor windowText = darkAppearance ? QColor(240, 240, 240) : Qt::black;
362 const QColor backGround = darkAppearance ? QColor(50, 50, 50) : QColor(239, 239, 239);
363 const QColor light = backGround.lighter(150);
364 const QColor mid = (backGround.darker(130));
365 const QColor midLight = mid.lighter(110);
366 const QColor base = darkAppearance ? backGround.darker(140) : Qt::white;
367 const QColor disabledBase(backGround);
368 const QColor dark = backGround.darker(150);
369 const QColor darkDisabled = QColor(209, 209, 209).darker(110);
370 const QColor text = darkAppearance ? windowText : Qt::black;
371 const QColor highlight = QColor(48, 140, 198);
372 const QColor hightlightedText = darkAppearance ? windowText : Qt::white;
373 const QColor disabledText = darkAppearance ? QColor(130, 130, 130) : QColor(190, 190, 190);
374 const QColor button = backGround;
375 const QColor shadow = dark.darker(135);
376 const QColor disabledShadow = shadow.lighter(150);
377 const QColor disabledHighlight(145, 145, 145);
378 QColor placeholder = text;
379 placeholder.setAlpha(128);
380
381 QPalette fusionPalette(windowText, backGround, light, dark, mid, text, base);
382 fusionPalette.setBrush(QPalette::Midlight, midLight);
383 fusionPalette.setBrush(QPalette::Button, button);
384 fusionPalette.setBrush(QPalette::Shadow, shadow);
385 fusionPalette.setBrush(QPalette::HighlightedText, hightlightedText);
386
387 fusionPalette.setBrush(QPalette::Disabled, QPalette::Text, disabledText);
388 fusionPalette.setBrush(QPalette::Disabled, QPalette::WindowText, disabledText);
389 fusionPalette.setBrush(QPalette::Disabled, QPalette::ButtonText, disabledText);
390 fusionPalette.setBrush(QPalette::Disabled, QPalette::Base, disabledBase);
391 fusionPalette.setBrush(QPalette::Disabled, QPalette::Dark, darkDisabled);
392 fusionPalette.setBrush(QPalette::Disabled, QPalette::Shadow, disabledShadow);
393
394 fusionPalette.setBrush(QPalette::Active, QPalette::Highlight, highlight);
395 fusionPalette.setBrush(QPalette::Inactive, QPalette::Highlight, highlight);
396 fusionPalette.setBrush(QPalette::Disabled, QPalette::Highlight, disabledHighlight);
397
398 fusionPalette.setBrush(QPalette::Active, QPalette::AccentColor, highlight);
399 fusionPalette.setBrush(QPalette::Inactive, QPalette::AccentColor, highlight);
400 fusionPalette.setBrush(QPalette::Disabled, QPalette::AccentColor, disabledHighlight);
401
402 fusionPalette.setBrush(QPalette::PlaceholderText, placeholder);
403
404 // Use a more legible light blue on dark backgrounds than the default Qt::blue.
405 if (darkAppearance)
406 fusionPalette.setBrush(QPalette::Link, highlight);
407
408 return fusionPalette;
409}
410
412{
415}
416
418 : d_ptr(new QPlatformThemePrivate)
419{
420
421}
422
424 : d_ptr(priv)
425{ }
426
428{
429
430}
431
433{
434 Q_UNUSED(type);
435 return false;
436}
437
439{
440 Q_UNUSED(type);
441 return nullptr;
442}
443
445{
447}
448
450{
451 Q_D(const QPlatformTheme);
453 if (!d->systemPalette)
454 const_cast<QPlatformTheme *>(this)->d_ptr->initializeSystemPalette();
455 return d->systemPalette;
456 }
457 return nullptr;
458}
459
461{
462 Q_UNUSED(type);
463 return nullptr;
464}
465
467{
468 Q_UNUSED(sp);
469 Q_UNUSED(size);
470 // TODO Should return QCommonStyle pixmaps?
471 return QPixmap();
472}
473
484QIcon QPlatformTheme::fileIcon(const QFileInfo &fileInfo, QPlatformTheme::IconOptions iconOptions) const
485{
486 Q_UNUSED(fileInfo);
487 Q_UNUSED(iconOptions);
488 // TODO Should return QCommonStyle pixmaps?
489 return QIcon();
490}
491
493{
494 // For theme hints which mirror platform integration style hints, query
495 // the platform integration. The base QPlatformIntegration::styleHint()
496 // function will in turn query QPlatformTheme::defaultThemeHint() if there
497 // is no custom value.
498 switch (hint) {
535 default:
537 }
538}
539
541{
542 switch (hint) {
544 return QVariant(1000);
546 return QVariant(400);
548 return QVariant(30);
550 return QVariant(400);
552 return QVariant(10);
554 return QVariant(500);
556 return QVariant(int(0));
558 return QVariant(QChar(u'\x25CF'));
560 return QVariant(int(0)); // no limit
562 return QVariant(false);
564 return QVariant(false);
566 return QVariant(int(0));
568 return QVariant(false);
570 return QVariant(false);
572 return QVariant(int(Qt::ToolButtonIconOnly));
574 return QVariant(int(0));
577 return QVariant(QString());
579 return QVariant(QStringList());
581 return QVariant(QStringList());
583 return QVariant(QStringList());
585 return QVariant(true);
586 case TextCursorWidth:
587 return QVariant(1);
588 case DropShadow:
589 return QVariant(false);
591 return QVariant(-1);
592 case KeyboardScheme:
593 return QVariant(int(WindowsKeyboardScheme));
594 case UiEffects:
595 return QVariant(int(0));
598 case TabFocusBehavior:
600 case IconPixmapSizes:
604 return QVariant(false);
606 return QVariant(800);
608 {
609 bool ok = false;
610 const int dist = qEnvironmentVariableIntValue("QT_DBL_CLICK_DIST", &ok);
611 return QVariant(ok ? dist : 5);
612 }
613 case WheelScrollLines:
614 return QVariant(3);
616 {
617 bool ok = false;
618 int dist = qEnvironmentVariableIntValue("QT_DBL_TAP_DIST", &ok);
619 if (!ok)
621 return QVariant(ok ? dist : 10);
622 }
624 return QVariant(10);
626 return true;
628 return true;
630 return false;
631 case ButtonPressKeys:
634 return false;
636 return QVariant(15);
638 return QVariant(2500);
640 return QVariant(5000);
642 return false;
643 case MouseCursorTheme:
644 return QVariant(QString());
645 case MouseCursorSize:
646 return QVariant(QSize(16, 16));
648 return true;
649 }
650
651 return QVariant();
652}
653
655{
656 return nullptr;
657}
658
660{
661 return nullptr;
662}
663
665{
666 return nullptr;
667}
668
669#ifndef QT_NO_SYSTEMTRAYICON
675{
676 return nullptr;
677}
678#endif
679
691{
692 return new QIconLoaderEngine(iconName);
693}
694
695#if QT_CONFIG(shortcut)
696// mixed-mode predicate: all of these overloads are actually needed (but not all for every compiler)
697struct ByStandardKey {
698 typedef bool result_type;
699
700 bool operator()(QKeySequence::StandardKey lhs, QKeySequence::StandardKey rhs) const
701 { return lhs < rhs; }
702
703 bool operator()(const QKeyBinding& lhs, const QKeyBinding& rhs) const
704 { return operator()(lhs.standardKey, rhs.standardKey); }
705
706 bool operator()(QKeySequence::StandardKey lhs, const QKeyBinding& rhs) const
707 { return operator()(lhs, rhs.standardKey); }
708
709 bool operator()(const QKeyBinding& lhs, QKeySequence::StandardKey rhs) const
710 { return operator()(lhs.standardKey, rhs); }
711};
712
718QList<QKeySequence> QPlatformTheme::keyBindings(QKeySequence::StandardKey key) const
719{
721 QList <QKeySequence> list;
722
723 std::pair<const QKeyBinding *, const QKeyBinding *> range =
724 std::equal_range(QPlatformThemePrivate::keyBindings,
725 QPlatformThemePrivate::keyBindings + QPlatformThemePrivate::numberOfKeyBindings,
726 key, ByStandardKey());
727
728 for (const QKeyBinding *it = range.first; it < range.second; ++it) {
729 if (!(it->platform & platform))
730 continue;
731
732 uint shortcut = it->shortcut.toCombined();
733
734 if (it->priority > 0)
736 else
738 }
739
740 return list;
741}
742#endif
743
752{
754}
755
756#if QT_CONFIG(shortcut)
764QKeySequence QPlatformTheme::standardButtonShortcut(int button) const
765{
767 return QKeySequence();
768}
769#endif // QT_CONFIG(shortcut)
770
772{
773 switch (button) {
775 return QCoreApplication::translate("QPlatformTheme", "OK");
777 return QCoreApplication::translate("QPlatformTheme", "Save");
779 return QCoreApplication::translate("QPlatformTheme", "Save All");
781 return QCoreApplication::translate("QPlatformTheme", "Open");
783 return QCoreApplication::translate("QPlatformTheme", "&Yes");
785 return QCoreApplication::translate("QPlatformTheme", "Yes to &All");
787 return QCoreApplication::translate("QPlatformTheme", "&No");
789 return QCoreApplication::translate("QPlatformTheme", "N&o to All");
791 return QCoreApplication::translate("QPlatformTheme", "Abort");
793 return QCoreApplication::translate("QPlatformTheme", "Retry");
795 return QCoreApplication::translate("QPlatformTheme", "Ignore");
797 return QCoreApplication::translate("QPlatformTheme", "Close");
799 return QCoreApplication::translate("QPlatformTheme", "Cancel");
801 return QCoreApplication::translate("QPlatformTheme", "Discard");
803 return QCoreApplication::translate("QPlatformTheme", "Help");
805 return QCoreApplication::translate("QPlatformTheme", "Apply");
807 return QCoreApplication::translate("QPlatformTheme", "Reset");
809 return QCoreApplication::translate("QPlatformTheme", "Restore Defaults");
810 default:
811 break;
812 }
813 return QString();
814}
815
817{
818 const auto mnemonicInParentheses = [](QStringView text) {
819 /* Format of mnemonics to remove is /\‍(&[^&]\‍)/ but accept full-width
820 forms of ( and ) as equivalent, for cross-platform compatibility with
821 MS (and consequent behavior of translators, see QTBUG-110829).
822 */
823 Q_ASSERT(text.size() == 4); // Caller's responsibility.
824 constexpr QChar wideOpen = u'\uff08', wideClose = u'\uff09';
825 if (!text.startsWith(u'(') && !text.startsWith(wideOpen))
826 return false;
827 if (text[1] != u'&' || text[2] == u'&')
828 return false;
829 return text.endsWith(u')') || text.endsWith(wideClose);
830 };
831 QString returnText(original.size(), u'\0');
832 int finalDest = 0;
833 QStringView text(original);
834 while (!text.isEmpty()) {
835 if (text.startsWith(u'&')) {
836 text = text.sliced(1);
837 if (text.isEmpty())
838 break;
839 } else if (text.size() >= 4 && mnemonicInParentheses(text.first(4))) {
840 // Advance over the matched mnemonic:
841 text = text.sliced(4);
842 // Also strip any leading space before it:
843 while (finalDest > 0 && returnText.at(finalDest - 1).isSpace())
844 --finalDest;
845 continue;
846 }
847 returnText[finalDest] = text.front();
848 text = text.sliced(1);
849 ++finalDest;
850 }
851 returnText.truncate(finalDest);
852 return returnText;
853}
854
856{
858 unsigned result = 1u << keyboardScheme;
859#if QT_CONFIG(shortcut)
860 if (keyboardScheme == QPlatformTheme::KdeKeyboardScheme
861 || keyboardScheme == QPlatformTheme::GnomeKeyboardScheme
862 || keyboardScheme == QPlatformTheme::CdeKeyboardScheme)
863 result |= KB_X11;
864#endif
865 return result;
866}
867
869{
870 return d_func()->name;
871}
872
874
875#include "moc_qplatformtheme.cpp"
\inmodule QtCore
Definition qchar.h:48
constexpr bool isSpace() const noexcept
Returns true if the character is a separator character (Separator_* categories or certain code points...
Definition qchar.h:466
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
\inmodule QtCore \reentrant
Definition qfileinfo.h:22
\reentrant
Definition qfont.h:20
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.
Definition qlist.h:74
void prepend(rvalue_ref t)
Definition qlist.h:456
void append(parameter_type t)
Definition qlist.h:441
The QPalette class contains color groups for each widget state.
Definition qpalette.h:19
void setBrush(ColorRole cr, const QBrush &brush)
Sets the brush for the given color role to the specified brush for all groups in the palette.
Definition qpalette.h:150
@ Inactive
Definition qpalette.h:48
@ Disabled
Definition qpalette.h:48
@ HighlightedText
Definition qpalette.h:52
@ ButtonText
Definition qpalette.h:51
@ WindowText
Definition qpalette.h:50
@ Highlight
Definition qpalette.h:52
@ AccentColor
Definition qpalette.h:58
@ PlaceholderText
Definition qpalette.h:57
@ Midlight
Definition qpalette.h:50
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.
virtual QVariant styleHint(StyleHint hint) const
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)
ThemeHint
This enum describes the available theme hints.
@ DialogButtonBoxButtonsHaveIcons
@ ItemViewActivateItemOnSingleClick
QScopedPointer< QPlatformThemePrivate > d_ptr
\inmodule QtCore
Definition qsize.h:207
\inmodule QtCore
Definition qsize.h:25
\inmodule QtCore
\inmodule QtCore
Definition qstringview.h:76
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:127
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:5299
void truncate(qsizetype pos)
Truncates the string at the given position index.
Definition qstring.cpp:6159
qsizetype size() const
Returns the number of characters in this string.
Definition qstring.h:182
QString first(qsizetype n) const
Definition qstring.h:337
const QChar at(qsizetype i) const
Returns the character at the given index position in the string.
Definition qstring.h:1079
QChar front() const
Definition qstring.h:214
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:5350
bool isEmpty() const
Returns true if the string has no characters; otherwise returns false.
Definition qstring.h:1083
QString sliced(qsizetype pos) const
Definition qstring.h:341
\inmodule QtCore
Definition qvariant.h:64
int toInt(bool *ok=nullptr) const
Returns the variant as an int if the variant has userType() \l QMetaType::Int, \l QMetaType::Bool,...
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:531
QString text
QPushButton * button
[2]
QSet< QString >::iterator it
Combined button and popup list for selecting options.
ColorScheme
Definition qnamespace.h:49
@ CTRL
@ META
@ SHIFT
@ ALT
@ TabFocusAllControls
Definition qnamespace.h:117
@ white
Definition qnamespace.h:30
@ black
Definition qnamespace.h:29
@ Key_Escape
Definition qnamespace.h:658
@ Key_F20
Definition qnamespace.h:704
@ Key_O
Definition qnamespace.h:560
@ Key_Tab
Definition qnamespace.h:659
@ Key_C
Definition qnamespace.h:548
@ Key_Select
@ Key_B
Definition qnamespace.h:547
@ Key_Plus
Definition qnamespace.h:524
@ Key_Return
Definition qnamespace.h:662
@ Key_Right
Definition qnamespace.h:674
@ Key_Enter
Definition qnamespace.h:663
@ Key_K
Definition qnamespace.h:556
@ Key_PageUp
Definition qnamespace.h:676
@ Key_Space
Definition qnamespace.h:512
@ Key_D
Definition qnamespace.h:549
@ Key_I
Definition qnamespace.h:554
@ Key_U
Definition qnamespace.h:566
@ Key_Backspace
Definition qnamespace.h:661
@ Key_Backtab
Definition qnamespace.h:660
@ Key_F6
Definition qnamespace.h:690
@ Key_Insert
Definition qnamespace.h:664
@ Key_BracketRight
Definition qnamespace.h:574
@ Key_Left
Definition qnamespace.h:672
@ Key_X
Definition qnamespace.h:569
@ Key_BracketLeft
Definition qnamespace.h:572
@ Key_A
Definition qnamespace.h:546
@ Key_Question
Definition qnamespace.h:544
@ Key_R
Definition qnamespace.h:563
@ Key_F11
Definition qnamespace.h:695
@ Key_P
Definition qnamespace.h:561
@ Key_Up
Definition qnamespace.h:673
@ Key_Minus
Definition qnamespace.h:526
@ Key_F3
Definition qnamespace.h:687
@ Key_Q
Definition qnamespace.h:562
@ Key_F16
Definition qnamespace.h:700
@ Key_Down
Definition qnamespace.h:675
@ Key_T
Definition qnamespace.h:565
@ Key_F18
Definition qnamespace.h:702
@ Key_V
Definition qnamespace.h:567
@ Key_F4
Definition qnamespace.h:688
@ Key_G
Definition qnamespace.h:552
@ Key_Delete
Definition qnamespace.h:665
@ Key_Forward
Definition qnamespace.h:842
@ Key_H
Definition qnamespace.h:553
@ Key_W
Definition qnamespace.h:568
@ Key_F1
Definition qnamespace.h:685
@ Key_F14
Definition qnamespace.h:698
@ Key_Period
Definition qnamespace.h:527
@ Key_Z
Definition qnamespace.h:571
@ Key_PageDown
Definition qnamespace.h:677
@ Key_F5
Definition qnamespace.h:689
@ Key_Back
Definition qnamespace.h:841
@ Key_Home
Definition qnamespace.h:670
@ Key_F
Definition qnamespace.h:551
@ Key_BraceRight
Definition qnamespace.h:580
@ Key_N
Definition qnamespace.h:559
@ Key_Comma
Definition qnamespace.h:525
@ Key_S
Definition qnamespace.h:564
@ Key_BraceLeft
Definition qnamespace.h:578
@ Key_Y
Definition qnamespace.h:570
@ Key_E
Definition qnamespace.h:550
@ Key_End
Definition qnamespace.h:671
@ ToolButtonIconOnly
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:29
QT_BEGIN_NAMESPACE Platform platform()
QList< int > list
[14]
std::uniform_real_distribution dist(1, 2.5)
[2]
QObject::connect nullptr
QKeySequence::StandardKey standardKey