7#if QT_CONFIG(style_windows) || defined(QT_PLUGIN)
18#include <private/qmenubar_p.h>
22#if QT_CONFIG(rubberband)
31#if QT_CONFIG(mainwindow)
40#if QT_CONFIG(listview)
43#include <private/qmath_p.h>
45#include <QtGui/qpainterpath.h>
46#include <QtGui/qscreen.h>
47#include <QtGui/qwindow.h>
48#include <qpa/qplatformtheme.h>
49#include <qpa/qplatformscreen.h>
50#include <private/qguiapplication_p.h>
51#include <private/qhighdpiscaling_p.h>
52#include <qpa/qplatformintegration.h>
53#include <private/qwidget_p.h>
55#include <private/qstylehelper_p.h>
56#if QT_CONFIG(animation)
57#include <private/qstyleanimation_p.h>
69# ifndef COLOR_GRADIENTACTIVECAPTION
70# define COLOR_GRADIENTACTIVECAPTION 27
72# ifndef COLOR_GRADIENTINACTIVECAPTION
73# define COLOR_GRADIENTINACTIVECAPTION 28
89QWindowsStylePrivate::QWindowsStylePrivate() =
default;
92bool QWindowsStylePrivate::hasSeenAlt(
const QWidget *
widget)
const
95 return seenAlt.contains(
widget);
104 if (!
o->isWidgetType())
118 ||
w->style()->styleHint(SH_UnderlineShortcut,
nullptr,
w);
137#if QT_CONFIG(menubar)
172QWindowsStyle::QWindowsStyle() :
QCommonStyle(*new QWindowsStylePrivate)
181QWindowsStyle::QWindowsStyle(QWindowsStylePrivate &dd) :
QCommonStyle(dd)
187QWindowsStyle::~QWindowsStyle()
192static inline QRgb colorref2qrgb(COLORREF col)
194 return qRgb(GetRValue(col), GetGValue(col), GetBValue(col));
202 QWindowsStylePrivate *
d =
const_cast<QWindowsStylePrivate*
>(d_func());
204 if (!
proxy()->styleHint(SH_UnderlineShortcut,
nullptr) &&
app)
208 d->activeGradientCaptionColor =
palette.highlight().color();
209 d->activeCaptionColor =
d->activeGradientCaptionColor;
210 d->inactiveGradientCaptionColor =
palette.dark().color();
211 d->inactiveCaptionColor =
d->inactiveGradientCaptionColor;
212 d->inactiveCaptionText =
palette.window().color();
216 DWORD activeCaption = GetSysColor(COLOR_ACTIVECAPTION);
218 DWORD inactiveCaption = GetSysColor(COLOR_INACTIVECAPTION);
220 DWORD inactiveCaptionText = GetSysColor(COLOR_INACTIVECAPTIONTEXT);
221 d->activeCaptionColor = colorref2qrgb(activeCaption);
222 d->activeGradientCaptionColor = colorref2qrgb(gradientActiveCaption);
223 d->inactiveCaptionColor = colorref2qrgb(inactiveCaption);
224 d->inactiveGradientCaptionColor = colorref2qrgb(gradientInactiveCaption);
225 d->inactiveCaptionText = colorref2qrgb(inactiveCaptionText);
252void QWindowsStyle::polish(
QPalette &pal)
266 return GetSystemMetricsForDpi(SM_CXFRAME, dpi);
269 const int resizeBorderThickness =
270 GetSystemMetricsForDpi(SM_CXSIZEFRAME, dpi) + GetSystemMetricsForDpi(SM_CXPADDEDBORDER, dpi);
272 return GetSystemMetricsForDpi(SM_CYSMCAPTION, dpi) + resizeBorderThickness;
273 return GetSystemMetricsForDpi(SM_CYCAPTION, dpi) + resizeBorderThickness;
278 NONCLIENTMETRICS ncm;
279 ncm.cbSize =
sizeof(NONCLIENTMETRICS);
280 if (SystemParametersInfoForDpi(SPI_GETNONCLIENTMETRICS,
sizeof(NONCLIENTMETRICS), &ncm, 0, dpi))
281 return qMax(ncm.iScrollHeight, ncm.iScrollWidth);
286 return GetSystemMetricsForDpi(SM_CYFRAME, dpi);
295 return QWindowsStylePrivate::InvalidMetric;
345 return QWindowsStylePrivate::InvalidMetric;
369 int ret = QWindowsStylePrivate::pixelMetricFromSystemDp(pm,
opt,
widget);
370 if (
ret != QWindowsStylePrivate::InvalidMetric)
373 ret = QWindowsStylePrivate::fixedPixelMetric(pm);
374 if (
ret != QWindowsStylePrivate::InvalidMetric)
380 case PM_MaximumDragDistance:
390 case PM_SliderControlThickness:
391 if (
const QStyleOptionSlider *sl = qstyleoption_cast<const QStyleOptionSlider *>(
opt)) {
392 int space = (sl->orientation ==
Qt::Horizontal) ? sl->rect.height() : sl->rect.width();
393 int ticks = sl->tickPosition;
406 thick +=
proxy()->pixelMetric(PM_SliderLength, sl,
widget) / 4;
410 thick += (space * 2) / (
n + 2);
416 case PM_IconViewIconSize:
420 case PM_SplitterWidth:
448 case SH_EtchDisabledText: {
456 case SH_Slider_SnapToValue:
457 case SH_PrintDialog_RightAlignButtons:
458 case SH_FontDialog_SelectAssociatedText:
459 case SH_Menu_AllowActiveAndDisabled:
460 case SH_MenuBar_AltKeyNavigation:
461 case SH_MenuBar_MouseTracking:
462 case SH_Menu_MouseTracking:
463 case SH_ComboBox_ListMouseTracking:
464 case SH_Slider_StopMouseOverSlider:
465 case SH_MainWindow_SpaceBelowMenuBar:
469 case SH_ItemView_ShowDecorationSelected:
470#if QT_CONFIG(listview)
471 if (qobject_cast<const QListView*>(
widget))
475 case SH_ItemView_ChangeHighlightOnFocus:
478 case SH_ToolBox_SelectedPageTitleBold:
483 case SH_UnderlineShortcut:
490 Q_D(
const QWindowsStyle);
492#if QT_CONFIG(menubar)
501 if (
menuBar->d_func()->keyboardState ||
d->altDown())
510#if QT_CONFIG(accessibility)
512 && QStyleHelper::isInstanceOf(
opt->
styleObject, QAccessible::MenuItem)
519 case SH_Menu_SubMenuSloppyCloseTimeout:
520 case SH_Menu_SubMenuPopupDelay: {
523 if (SystemParametersInfo(SPI_GETMENUSHOWDELAY, 0, &delay, 0))
530#if QT_CONFIG(rubberband)
531 case SH_RubberBand_Mask:
532 if (
const QStyleOptionRubberBand *rbOpt = qstyleoption_cast<const QStyleOptionRubberBand *>(
opt)) {
552 case SH_ItemView_ArrowKeysNavigateIntoChildren:
555 case SH_DialogButtonBox_ButtonsHaveIcons:
570 bool doRestore =
false;
573#if QT_CONFIG(toolbar)
574 case PE_IndicatorToolBarSeparator:
577 const int margin = 2;
578 QPen oldPen =
p->pen();
583 rect.bottomLeft().y() - margin,
585 rect.topLeft().y() + margin);
588 rect.bottomLeft().y() - margin,
590 rect.topLeft().y() + margin);
595 p->drawLine(
rect.topLeft().x() + margin ,
597 rect.topRight().x() - margin,
600 p->drawLine(
rect.topLeft().x() + margin ,
602 rect.topRight().x() - margin,
608 case PE_IndicatorToolBarHandle:
611 if (
opt->
state & State_Horizontal) {
634 case PE_FrameButtonTool:
635 case PE_PanelButtonTool: {
636 QPen oldPen =
p->pen();
637#if QT_CONFIG(dockwidget)
638 if (
w &&
w->inherits(
"QDockWidgetTitleButton")) {
650 bool panel = (pe == PE_PanelButtonTool);
662 if (
opt->
state & (State_Raised | State_Sunken | State_On)) {
664 if (
opt->
state & (State_Enabled | State_Sunken | State_On)){
670 opt->
state & (State_Sunken | State_On), 1);
685 case PE_PanelButtonCommand:
691 if (! (
flags & State_Sunken) && (
flags & State_On))
699 p->drawRect(
r.adjusted(0, 0, -1, -1));
700 }
else if (
flags & (State_Raised | State_On | State_Sunken)) {
708 case PE_FrameDefaultButton: {
709 QPen oldPen =
p->pen();
715 rect.adjust(topLevelAdjustment, topLevelAdjustment,
716 bottomRightAdjustment, bottomRightAdjustment);
721 case PE_IndicatorCheckBox: {
727 else if (
opt->
state & State_Enabled)
740 case PE_IndicatorItemViewItemCheck:
745#if QT_CONFIG(itemviews)
746 if (pe == PE_IndicatorItemViewItemCheck) {
747 const QStyleOptionViewItem *itemViewOpt = qstyleoption_cast<const QStyleOptionViewItem *>(
opt);
748 p->setPen(itemViewOpt
749 && itemViewOpt->showDecorationSelected
759 std::array<QPointF, 6>
points;
770 p->drawPolygon(
points.data(),
static_cast<int>(
points.size()));
775 case PE_FrameFocusRect:
778 if (!(fropt->state & State_KeyboardFocusChange) && !
proxy()->styleHint(SH_UnderlineShortcut,
opt))
783 QColor bg_col = fropt->backgroundColor;
784 if (!bg_col.isValid())
785 bg_col =
p->background().color();
787 QColor patternCol((bg_col.red() ^ 0xff) & 0xff,
788 (bg_col.green() ^ 0xff) & 0xff,
789 (bg_col.blue() ^ 0xff) & 0xff);
791 p->setBrushOrigin(
r.topLeft());
793 p->drawRect(
r.left(),
r.top(),
r.width(), 1);
794 p->drawRect(
r.left(),
r.bottom(),
r.width(), 1);
795 p->drawRect(
r.left(),
r.top(), 1,
r.height());
796 p->drawRect(
r.right(),
r.top(), 1,
r.height());
800 case PE_IndicatorRadioButton:
807 qreal radius = (
r.width() + (
r.width() + 1) % 2) / 2.0 - 1;
810 path1.
addEllipse(circleCenter, radius, radius);
813 path2.
addEllipse(circleCenter, radius, radius);
816 path3.
addEllipse(circleCenter, radius, radius);
819 path4.
addEllipse(circleCenter, radius, radius);
821 QPolygon topLeftPol, bottomRightPol;
822 topLeftPol.
setPoints(3,
r.x(),
r.y(),
r.x(),
r.y() +
r.height(),
r.x() +
r.width(),
r.y());
823 bottomRightPol.setPoints(3,
r.x(),
r.y() +
r.height(),
r.x() +
r.width(),
r.y() +
r.height(),
r.x() +
r.width(),
r.y());
825 p->setClipRegion(
QRegion(topLeftPol));
833 p->setClipRegion(
QRegion(bottomRightPol));
844 p->setClipping(
false);
845 p->setPen(fillColor);
846 p->setBrush(fillColor);
863 if (pe == PE_FrameMenu) {
867 if (pe == PE_Frame && (
frame->state & State_Raised))
869 else if (pe == PE_Frame && (
frame->state & State_Sunken))
887 case PE_FrameButtonBevel:
888 case PE_PanelButtonBevel: {
890 bool panel = pe != PE_FrameButtonBevel;
897 if (
opt->
state & (State_Raised | State_On | State_Sunken)) {
907 case PE_FrameWindow: {
913#if QT_CONFIG(dockwidget)
914 case PE_IndicatorDockWidgetResizeHandle:
916 case PE_FrameDockWidget:
917 if (qstyleoption_cast<const QStyleOptionFrame *>(
opt)) {
923 case PE_FrameStatusBarItem:
927 case PE_IndicatorProgressChunk:
929 bool vertical =
false, inverted =
false;
932 inverted = pb->invertedAppearance;
936 int chunksize =
proxy()->pixelMetric(PM_ProgressBarChunkWidth,
opt,
w) - space;
961 case PE_FrameTabWidget: {
975#if QT_CONFIG(rubberband)
977 if (qstyleoption_cast<const QStyleOptionRubberBand *>(
opt)) {
980 QPainter pixmapPainter(&tiledPixmap);
985 pixmapPainter.drawRect(0, 0, tiledPixmap.width(), tiledPixmap.height());
992 p->setClipRegion(
mask.region);
993 p->drawTiledPixmap(
r.x(),
r.y(),
r.width(),
r.height(), tiledPixmap);
1000#if QT_CONFIG(menu) && QT_CONFIG(mainwindow)
1001 case CE_MenuBarEmptyArea:
1004 QPen oldPen =
p->pen();
1015 menuitem->rect.getRect(&
x, &
y, &
w, &
h);
1016 int tab = menuitem->reservedShortcutWidth;
1017 bool dis = !(menuitem->state & State_Enabled);
1019 ? menuitem->checked :
false;
1020 bool act = menuitem->state & State_Selected;
1023 int checkcol = qMax<int>(menuitem->maxIconWidth, QWindowsStylePrivate::windowsCheckMarkWidth);
1026 p->fillRect(menuitem->rect.adjusted(0, 0, -1, 0),
fill);
1029 int yoff =
y-1 +
h / 2;
1030 p->setPen(menuitem->palette.dark().color());
1031 p->drawLine(
x + 2, yoff,
x +
w - 4, yoff);
1032 p->setPen(menuitem->palette.light().color());
1033 p->drawLine(
x + 2, yoff + 1,
x +
w - 4, yoff + 1);
1038 if (!menuitem->icon.isNull() && checked) {
1041 menuitem->palette,
true, 1,
1054 if (!menuitem->icon.isNull()) {
1064 pmr.moveCenter(vCheckRect.center());
1065 p->setPen(menuitem->palette.text().color());
1066 p->drawPixmap(pmr.topLeft(),
pixmap);
1067 }
else if (checked) {
1069 newMi.
state = State_None;
1071 newMi.state |= State_Enabled;
1073 newMi.state |= State_On | State_Selected;
1075 menuitem->rect.y() + QWindowsStylePrivate::windowsItemFrame,
1076 checkcol - 2 * QWindowsStylePrivate::windowsItemFrame,
1077 menuitem->rect.height() - 2 * QWindowsStylePrivate::windowsItemFrame));
1078 proxy()->drawPrimitive(PE_IndicatorMenuCheckMark, &newMi,
p,
widget);
1080 p->setPen(act ? menuitem->palette.highlightedText().color() : menuitem->
palette.buttonText().
color());
1084 discol = menuitem->palette.text().color();
1088 int xm = int(QWindowsStylePrivate::windowsItemFrame) + checkcol + int(QWindowsStylePrivate::windowsItemHMargin);
1089 int xpos = menuitem->rect.x() + xm;
1090 QRect textRect(xpos,
y + QWindowsStylePrivate::windowsItemVMargin,
1091 w - xm - QWindowsStylePrivate::windowsRightBorder - tab + 1,
h - 2 * QWindowsStylePrivate::windowsItemVMargin);
1098 if (!
proxy()->styleHint(SH_UnderlineShortcut, menuitem,
widget))
1105 if (dis && !act &&
proxy()->styleHint(SH_EtchDisabledText,
opt,
widget)) {
1106 p->setPen(menuitem->palette.light().color());
1107 p->drawText(vShortcutRect.adjusted(1, 1, 1, 1), text_flags, textToDraw);
1110 p->drawText(vShortcutRect, text_flags, textToDraw);
1118 if (dis && !act &&
proxy()->styleHint(SH_EtchDisabledText,
opt,
widget)) {
1119 p->setPen(menuitem->palette.light().color());
1120 p->drawText(vTextRect.adjusted(1, 1, 1, 1), text_flags, textToDraw);
1123 p->drawText(vTextRect, text_flags, textToDraw);
1127 int dim = (
h - 2 * QWindowsStylePrivate::windowsItemFrame) / 2;
1128 PrimitiveElement arrow;
1130 xpos =
x +
w - QWindowsStylePrivate::windowsArrowHMargin - QWindowsStylePrivate::windowsItemFrame - dim;
1133 newMI.
rect = vSubMenuRect;
1134 newMI.state = dis ? State_None : State_Enabled;
1137 newMI.palette.highlightedText().color());
1144#if QT_CONFIG(menubar)
1145 case CE_MenuBarItem:
1147 bool active = mbi->state & State_Selected;
1148 bool hasFocus = mbi->state & State_HasFocus;
1149 bool down = mbi->state & State_Sunken;
1152 if (active || hasFocus) {
1155 p->setBrushOrigin(
p->brushOrigin() +
QPoint(1, 1));
1156 if (active && hasFocus)
1158 mbi->rect.height(), mbi->palette, active && down, 1, 0, &
b);
1159 if (active && down) {
1160 newMbi.rect.translate(
proxy()->pixelMetric(PM_ButtonShiftHorizontal, mbi,
widget),
1161 proxy()->pixelMetric(PM_ButtonShiftVertical, mbi,
widget));
1162 p->setBrushOrigin(
p->brushOrigin() -
QPoint(1, 1));
1169#if QT_CONFIG(tabbar)
1170 case CE_TabBarTabShape:
1171 if (
const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(
opt)) {
1175 bool selected = tab->state & State_Selected;
1176 bool lastTab = ((!rtlHorTabs && tab->position == QStyleOptionTab::End)
1178 && tab->position == QStyleOptionTab::Beginning));
1179 bool firstTab = ((!rtlHorTabs
1180 && tab->position == QStyleOptionTab::Beginning)
1182 && tab->position == QStyleOptionTab::End));
1183 bool onlyOne = tab->position == QStyleOptionTab::OnlyOneTab;
1184 bool previousSelected =
1186 && tab->selectedPosition == QStyleOptionTab::PreviousIsSelected)
1188 && tab->selectedPosition == QStyleOptionTab::NextIsSelected));
1191 && tab->selectedPosition == QStyleOptionTab::NextIsSelected)
1193 && tab->selectedPosition
1194 == QStyleOptionTab::PreviousIsSelected));
1195 int tabBarAlignment =
proxy()->styleHint(SH_TabBar_Alignment, tab,
widget);
1196 bool leftAligned = (!rtlHorTabs && tabBarAlignment ==
Qt::AlignLeft)
1200 bool rightAligned = (!rtlHorTabs && tabBarAlignment ==
Qt::AlignRight)
1204 QColor light = tab->palette.light().color();
1205 QColor dark = tab->palette.dark().color();
1206 QColor shadow = tab->palette.shadow().color();
1207 int borderThinkness =
proxy()->pixelMetric(PM_TabBarBaseOverlap, tab,
widget);
1209 borderThinkness /= 2;
1215 switch (tab->shape) {
1222 x1 += onlyOne || firstTab ? borderThinkness : 0;
1223 x2 -= onlyOne || lastTab ? borderThinkness : 0;
1226 p->fillRect(
QRect(
x1 + 1,
y1 + 1, (
x2 -
x1) - 1, (
y2 -
y1) - 2), tab->palette.window());
1234 if (firstTab || selected || onlyOne || !previousSelected) {
1236 p->drawLine(
x1,
y1 + 2,
x1,
y2 - ((onlyOne || firstTab) && selected && leftAligned ? 0 : borderThinkness));
1237 p->drawPoint(
x1 + 1,
y1 + 1);
1241 int beg =
x1 + (previousSelected ? 0 : 2);
1242 int end =
x2 - (nextSelected ? 0 : 2);
1247 if (lastTab || selected || onlyOne || !nextSelected) {
1249 p->drawLine(
x2,
y1 + 2,
x2,
y2 - ((onlyOne || lastTab) && selected && rightAligned ? 0 : borderThinkness));
1250 p->drawPoint(
x2 - 1,
y1 + 1);
1252 p->drawLine(
x2 - 1,
y1 + 2,
x2 - 1,
y2 - ((onlyOne || lastTab) && selected && rightAligned ? 0 : borderThinkness));
1258 x1 += firstTab ? borderThinkness : 0;
1259 x2 -= lastTab ? borderThinkness : 0;
1262 p->fillRect(
QRect(
x1 + 1,
y1 + 2, (
x2 -
x1) - 1, (
y2 -
y1) - 1), tab->palette.window());
1266 p->fillRect(
QRect(
x1,
y1 + 1, (
x2 - 1)-
x1, 1), tab->palette.window());
1267 p->fillRect(
QRect(
x1,
y1, (
x2 - 1)-
x1, 1), tab->palette.window());
1270 if (firstTab || selected || onlyOne || !previousSelected) {
1272 p->drawLine(
x1,
y2 - 2,
x1,
y1 + ((onlyOne || firstTab) && selected && leftAligned ? 0 : borderThinkness));
1273 p->drawPoint(
x1 + 1,
y2 - 1);
1277 int beg =
x1 + (previousSelected ? 0 : 2);
1278 int end =
x2 - (nextSelected ? 0 : 2);
1282 p->drawLine(beg,
y2 - 1,
end,
y2 - 1);
1285 if (lastTab || selected || onlyOne || !nextSelected) {
1287 p->drawLine(
x2,
y2 - 2,
x2,
y1 + ((onlyOne || lastTab) && selected && rightAligned ? 0 : borderThinkness));
1288 p->drawPoint(
x2 - 1,
y2 - 1);
1290 p->drawLine(
x2 - 1,
y2 - 2,
x2 - 1,
y1 + ((onlyOne || lastTab) && selected && rightAligned ? 0 : borderThinkness));
1296 y1 += firstTab ? borderThinkness : 0;
1297 y2 -= lastTab ? borderThinkness : 0;
1300 p->fillRect(
QRect(
x1 + 1,
y1 + 1, (
x2 -
x1) - 2, (
y2 -
y1) - 1), tab->palette.window());
1308 if (firstTab || selected || onlyOne || !previousSelected) {
1310 p->drawLine(
x1 + 2,
y1,
x2 - ((onlyOne || firstTab) && selected && leftAligned ? 0 : borderThinkness),
y1);
1311 p->drawPoint(
x1 + 1,
y1 + 1);
1315 int beg =
y1 + (previousSelected ? 0 : 2);
1316 int end =
y2 - (nextSelected ? 0 : 2);
1321 if (lastTab || selected || onlyOne || !nextSelected) {
1323 p->drawLine(
x1 + 3,
y2,
x2 - ((onlyOne || lastTab) && selected && rightAligned ? 0 : borderThinkness),
y2);
1324 p->drawPoint(
x1 + 2,
y2 - 1);
1326 p->drawLine(
x1 + 3,
y2 - 1,
x2 - ((onlyOne || lastTab) && selected && rightAligned ? 0 : borderThinkness),
y2 - 1);
1327 p->drawPoint(
x1 + 1,
y2 - 1);
1328 p->drawPoint(
x1 + 2,
y2);
1334 y1 += firstTab ? borderThinkness : 0;
1335 y2 -= lastTab ? borderThinkness : 0;
1338 p->fillRect(
QRect(
x1 + 2,
y1 + 1, (
x2 -
x1) - 1, (
y2 -
y1) - 1), tab->palette.window());
1342 p->fillRect(
QRect(
x1 + 1,
y1, 1, (
y2 - 1)-
y1),tab->palette.window());
1346 if (firstTab || selected || onlyOne || !previousSelected) {
1348 p->drawLine(
x2 - 2,
y1,
x1 + ((onlyOne || firstTab) && selected && leftAligned ? 0 : borderThinkness),
y1);
1349 p->drawPoint(
x2 - 1,
y1 + 1);
1353 int beg =
y1 + (previousSelected ? 0 : 2);
1354 int end =
y2 - (nextSelected ? 0 : 2);
1358 p->drawLine(
x2 - 1, beg,
x2 - 1,
end);
1361 if (lastTab || selected || onlyOne || !nextSelected) {
1363 p->drawLine(
x2 - 2,
y2,
x1 + ((onlyOne || lastTab) && selected && rightAligned ? 0 : borderThinkness),
y2);
1364 p->drawPoint(
x2 - 1,
y2 - 1);
1366 p->drawLine(
x2 - 2,
y2 - 1,
x1 + ((onlyOne || lastTab) && selected && rightAligned ? 0 : borderThinkness),
y2 - 1);
1373 case CE_ToolBoxTabShape:
1375 opt->
state & (State_Sunken | State_On), 1,
1378#if QT_CONFIG(splitter)
1383#if QT_CONFIG(scrollbar)
1384 case CE_ScrollBarSubLine:
1385 case CE_ScrollBarAddLine: {
1392 if (!(buttonOpt.state & State_Sunken))
1393 buttonOpt.
state |= State_Raised;
1400 PrimitiveElement arrow;
1401 if (
opt->
state & State_Horizontal) {
1402 if (ce == CE_ScrollBarAddLine)
1407 if (ce == CE_ScrollBarAddLine)
1408 arrow = PE_IndicatorArrowDown;
1410 arrow = PE_IndicatorArrowUp;
1416 case CE_ScrollBarAddPage:
1417 case CE_ScrollBarSubPage: {
1432 br =
QBrush(paletteBrush.texture());
1434 br =
QBrush(paletteBrush.textureImage());
1441 p->setBackground(bg);
1442 p->setBackgroundMode(bg_mode);
1444 case CE_ScrollBarSlider:
1445 if (!(
opt->
state & State_Enabled)) {
1450 br =
QBrush(paletteBrush.texture());
1452 br =
QBrush(paletteBrush.textureImage());
1461 buttonOpt.QStyleOption::operator=(*opt);
1462 buttonOpt.
state = State_Enabled | State_Raised;
1471 case CE_HeaderSection: {
1478 if (
opt->
state & (State_Raised | State_Sunken)) {
1484#if QT_CONFIG(toolbar)
1486 if (
const QStyleOptionToolBar *toolbar = qstyleoption_cast<const QStyleOptionToolBar *>(
opt)) {
1492 bool paintLeftBorder =
true;
1493 bool paintRightBorder =
true;
1494 bool paintBottomBorder =
true;
1496 switch (toolbar->toolBarArea){
1498 switch(toolbar->positionOfLine){
1499 case QStyleOptionToolBar::Beginning:
1500 case QStyleOptionToolBar::OnlyOne:
1501 paintBottomBorder =
false;
1508 switch(toolbar->positionWithinLine){
1509 case QStyleOptionToolBar::Beginning:
1510 paintLeftBorder =
false;
1512 case QStyleOptionToolBar::End:
1513 paintRightBorder =
false;
1515 case QStyleOptionToolBar::OnlyOne:
1516 paintRightBorder =
false;
1517 paintLeftBorder =
false;
1523 std::swap(paintLeftBorder, paintRightBorder);
1526 switch (toolbar->positionOfLine){
1527 case QStyleOptionToolBar::Beginning:
1528 case QStyleOptionToolBar::OnlyOne:
1529 paintRightBorder =
false;
1536 switch (toolbar->positionOfLine){
1537 case QStyleOptionToolBar::Beginning:
1538 case QStyleOptionToolBar::OnlyOne:
1539 paintLeftBorder =
false;
1552 p->drawLine(
rect.topLeft().x(),
1554 rect.topRight().x(),
1555 rect.topRight().y());
1557 if (paintLeftBorder){
1559 p->drawLine(
rect.topLeft().x(),
1561 rect.bottomLeft().x(),
1562 rect.bottomLeft().y());
1565 if (paintRightBorder){
1567 p->drawLine(
rect.topRight().x(),
1568 rect.topRight().y(),
1569 rect.bottomRight().x(),
1570 rect.bottomRight().y());
1573 if (paintBottomBorder){
1575 p->drawLine(
rect.bottomLeft().x(),
1576 rect.bottomLeft().y(),
1577 rect.bottomRight().x(),
1578 rect.bottomRight().y());
1586 case CE_ProgressBarContents:
1589 if (!
rect.isValid())
1593 const bool inverted = pb->invertedAppearance;
1599 m.translate(0, -(
rect.height() +
rect.y()*2));
1603 if (pal2.highlight() == pal2.window())
1606 bool reverse = ((!vertical && (pb->direction ==
Qt::RightToLeft)) || vertical);
1609 int w =
rect.width();
1610 Q_D(
const QWindowsStyle);
1611 if (pb->minimum == 0 && pb->maximum == 0) {
1612 const int unit_width =
proxy()->pixelMetric(PM_ProgressBarChunkWidth, pb,
widget);
1617 pbBits.palette = pal2;
1620 int chunkCount =
w / unit_width + 1;
1621#if QT_CONFIG(animation)
1623 step = (
animation->animationStep() / 3) % chunkCount;
1629 int chunksInRow = 5;
1630 int myY = pbBits.rect.y();
1631 int myHeight = pbBits.rect.height();
1632 int chunksToDraw = chunksInRow;
1634 if (step > chunkCount - 5)chunksToDraw = (chunkCount - step);
1638 int x0 = reverse ?
rect.left() +
rect.width() - unit_width*(step) - unit_width :
rect.
left() + unit_width * step;
1641 for (
int i = 0;
i < chunksToDraw ; ++
i) {
1642 pbBits.rect.setRect(
x0 +
x, myY, unit_width, myHeight);
1643 pbBits.rect =
m.mapRect(
QRectF(pbBits.rect)).toRect();
1644 proxy()->drawPrimitive(PE_IndicatorProgressChunk, &pbBits,
p,
widget);
1645 x += reverse ? -unit_width : unit_width;
1648 if ( step > chunkCount-5){
1649 x0 = reverse ?
rect.left() +
rect.width() - unit_width :
rect.left() ;
1651 int chunksToDraw = step - (chunkCount - chunksInRow);
1652 for (
int i = 0;
i < chunksToDraw ; ++
i) {
1653 pbBits.rect.setRect(
x0 +
x, myY, unit_width, myHeight);
1654 pbBits.rect =
m.mapRect(
QRectF(pbBits.rect)).toRect();
1655 proxy()->drawPrimitive(PE_IndicatorProgressChunk, &pbBits,
p,
widget);
1656 x += reverse ? -unit_width : unit_width;
1662#if QT_CONFIG(animation)
1670#if QT_CONFIG(dockwidget)
1671 case CE_DockWidgetTitle:
1674 Q_D(
const QWindowsStyle);
1676 const bool verticalTitleBar = dwOpt->verticalTitleBar;
1681 if (verticalTitleBar) {
1685 p->translate(
r.left(),
r.top() +
r.width());
1687 p->translate(-
r.left(), -
r.top());
1690 bool floating =
false;
1691 bool active = dwOpt->state & State_Active;
1692 QColor inactiveCaptionTextColor =
d->inactiveCaptionText;
1693 if (dwOpt->movable) {
1700 left =
d->activeCaptionColor;
1701 right =
d->activeGradientCaptionColor;
1703 left =
d->inactiveCaptionColor;
1704 right =
d->inactiveGradientCaptionColor;
1711 lg.setColorAt(0,
left);
1712 lg.setColorAt(1,
right);
1715 p->fillRect(
r.adjusted(0, 0, 0, -3), fillBrush);
1718 if (!dwOpt->title.isEmpty()) {
1719 QFont oldFont =
p->font();
1727 QRect titleRect = subElementRect(SE_DockWidgetTitleBarText,
opt,
widget);
1728 if (verticalTitleBar) {
1731 r.top() + titleRect.
left() -
rect.left(),
1734 proxy()->drawItemText(
p, titleRect,
1736 dwOpt->state & State_Enabled, dwOpt->title,
1738 p->setFont(oldFont);
1740 if (verticalTitleBar)
1745#if QT_CONFIG(combobox)
1746 case CE_ComboBoxLabel:
1748 if (
cb->state & State_HasFocus) {
1749 p->setPen(
cb->palette.highlightedText().color());
1750 p->setBackground(
cb->palette.highlight());
1752 p->setPen(
cb->palette.text().color());
1753 p->setBackground(
cb->palette.window());
1769 case SE_SliderFocusRect:
1770 case SE_ToolBoxTabContents:
1773 case SE_DockWidgetTitleBarText: {
1776 = qstyleoption_cast<const QStyleOptionDockWidget*>(
opt);
1777 const bool verticalTitleBar = dwOpt && dwOpt->verticalTitleBar;
1778 int m =
proxy()->pixelMetric(PM_DockWidgetTitleMargin,
opt,
w);
1779 if (verticalTitleBar) {
1780 r.adjust(0, 0, 0, -
m);
1783 r.adjust(
m, 0, 0, 0);
1785 r.adjust(0, 0, -
m, 0);
1789 case SE_ProgressBarContents:
1791 r.adjust(3, 3, -3, -3);
1805#if QT_CONFIG(slider)
1807 if (
const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider *>(
opt)) {
1808 int thickness =
proxy()->pixelMetric(PM_SliderControlThickness, slider,
widget);
1810 int ticks = slider->tickPosition;
1811 QRect groove =
proxy()->subControlRect(CC_Slider, slider, SC_SliderGroove,
widget);
1814 if ((slider->subControls & SC_SliderGroove) && groove.isValid()) {
1815 int mid = thickness / 2;
1822 p->setPen(slider->palette.shadow().color());
1825 groove.width(), 4, slider->palette,
true);
1826 p->drawLine(groove.x() + 1, groove.y() + mid - 1,
1827 groove.x() + groove.width() - 3, groove.y() + mid - 1);
1830 4, groove.height(), slider->palette,
true);
1831 p->drawLine(groove.x() + mid - 1, groove.y() + 1,
1832 groove.x() + mid - 1, groove.y() + groove.height() - 3);
1836 if (slider->subControls & SC_SliderTickmarks) {
1837 QStyleOptionSlider tmpSlider = *slider;
1838 tmpSlider.subControls = SC_SliderTickmarks;
1842 if (slider->subControls & SC_SliderHandle) {
1852 const QColor c0 = slider->palette.shadow().color();
1853 const QColor c1 = slider->palette.dark().color();
1855 const QColor c3 = slider->palette.midlight().color();
1856 const QColor c4 = slider->palette.light().color();
1859 if (slider->state & State_Enabled) {
1879 if (slider->state & State_HasFocus) {
1881 fropt.QStyleOption::operator=(*slider);
1882 fropt.
rect = subElementRect(SE_SliderFocusRect, slider,
widget);
1883 proxy()->drawPrimitive(PE_FrameFocusRect, &fropt,
p,
widget);
1886 if ((tickAbove && tickBelow) || (!tickAbove && !tickBelow)) {
1891 p->setBackgroundMode(oldMode);
1902 std::array<QPoint, 5>
points;
1907 d = (wi + 1) / 2 - 1;
1913 d = (wi + 1) / 2 - 1;
1918 d = (he + 1) / 2 - 1;
1924 d = (he + 1) / 2 - 1;
1933 p->setBrush(handleBrush);
1937 p->drawPolygon(
points.data(),
static_cast<int>(
points.size()));
1938 p->setBrush(oldBrush);
1939 p->setBackgroundMode(oldMode);
1947 if (
dir != SlLeft) {
1953 if (
dir != SlRight) {
1959 if (
dir != SlDown) {
2020#if QT_CONFIG(scrollbar)
2022 if (
const QStyleOptionSlider *scrollbar = qstyleoption_cast<const QStyleOptionSlider *>(
opt)) {
2023 QStyleOptionSlider newScrollbar = *scrollbar;
2024 if (scrollbar->minimum == scrollbar->maximum)
2025 newScrollbar.state &= ~State_Enabled;
2030#if QT_CONFIG(combobox)
2034 if ((cmb->subControls & SC_ComboBoxFrame)) {
2044 if (cmb->subControls & SC_ComboBoxArrow) {
2047 QRect ar =
proxy()->subControlRect(CC_ComboBox, cmb, SC_ComboBoxArrow,
widget);
2048 bool sunkenArrow = cmb->activeSubControls == SC_ComboBoxArrow
2049 && cmb->state & State_Sunken;
2051 p->setPen(cmb->palette.dark().color());
2053 p->drawRect(ar.adjusted(0,0,-1,-1));
2063 ar.adjust(2, 2, -2, -2);
2065 flags |= State_Enabled;
2067 flags |= State_HasFocus;
2070 flags |= State_Sunken;
2073 arrowOpt.state =
flags;
2074 proxy()->drawPrimitive(PE_IndicatorArrowDown, &arrowOpt,
p,
widget);
2077 if (cmb->subControls & SC_ComboBoxEditField) {
2078 QRect re =
proxy()->subControlRect(CC_ComboBox, cmb, SC_ComboBoxEditField,
widget);
2079 if (cmb->state & State_HasFocus && !cmb->editable)
2080 p->fillRect(re.x(), re.y(), re.width(), re.height(),
2083 if (cmb->state & State_HasFocus) {
2084 p->setPen(cmb->palette.highlightedText().color());
2085 p->setBackground(cmb->palette.highlight());
2088 p->setPen(cmb->palette.text().color());
2089 p->setBackground(cmb->palette.window());
2092 if (cmb->state & State_HasFocus && !cmb->editable) {
2094 focus.QStyleOption::operator=(*cmb);
2096 focus.state |= State_FocusAtBorder;
2097 focus.backgroundColor = cmb->palette.highlight().color();
2104#if QT_CONFIG(spinbox)
2106 if (
const QStyleOptionSpinBox *sb = qstyleoption_cast<const QStyleOptionSpinBox *>(
opt)) {
2107 QStyleOptionSpinBox
copy = *sb;
2108 PrimitiveElement pe;
2110 if (sb->frame && (sb->subControls & SC_SpinBoxFrame)) {
2122 if (sb->subControls & SC_SpinBoxUp) {
2123 copy.subControls = SC_SpinBoxUp;
2127 copy.state &= ~State_Enabled;
2130 copy.palette = pal2;
2132 if (sb->activeSubControls == SC_SpinBoxUp && (sb->state & State_Sunken)) {
2133 copy.state |= State_On;
2134 copy.state |= State_Sunken;
2136 copy.state |= State_Raised;
2137 copy.state &= ~State_Sunken;
2140 : PE_IndicatorSpinUp);
2142 copy.rect =
proxy()->subControlRect(CC_SpinBox, sb, SC_SpinBoxUp,
widget);
2145 copy.rect.adjust(4, 1, -5, -1);
2149 QStyleOptionSpinBox lightCopy =
copy;
2150 lightCopy.rect.adjust(1, 1, 1, 1);
2157 if (sb->subControls & SC_SpinBoxDown) {
2158 copy.subControls = SC_SpinBoxDown;
2159 copy.state = sb->state;
2163 copy.state &= ~State_Enabled;
2165 copy.palette = pal2;
2167 if (sb->activeSubControls == SC_SpinBoxDown && (sb->state & State_Sunken)) {
2168 copy.state |= State_On;
2169 copy.state |= State_Sunken;
2171 copy.state |= State_Raised;
2172 copy.state &= ~State_Sunken;
2175 : PE_IndicatorSpinDown);
2177 copy.rect =
proxy()->subControlRect(CC_SpinBox, sb, SC_SpinBoxDown,
widget);
2180 copy.rect.adjust(4, 0, -5, -1);
2184 QStyleOptionSpinBox lightCopy =
copy;
2185 lightCopy.rect.adjust(1, 1, 1, 1);
2213 defwidth = 2 *
proxy()->pixelMetric(PM_ButtonDefaultIndicator,
btn,
widget);
2218 if (w < minwidth + defwidth && !btn->
text.
isEmpty())
2219 w = minwidth + defwidth;
2220 if (
h < minheight + defwidth)
2221 h = minheight + defwidth;
2233 sz =
QSize(10, QWindowsStylePrivate::windowsSepHeight);
2235 else if (mi->icon.isNull()) {
2236 sz.setHeight(sz.height() - 2);
2241 int iconExtent =
proxy()->pixelMetric(PM_SmallIconSize,
opt,
widget);
2242 sz.setHeight(
qMax(sz.height(),
2243 mi->icon.actualSize(
QSize(iconExtent, iconExtent)).
height()
2244 + 2 * QWindowsStylePrivate::windowsItemFrame));
2246 int maxpmw = mi->maxIconWidth;
2247 int tabSpacing = 20;
2248 if (mi->text.contains(u
'\t'))
2251 w += 2 * QWindowsStylePrivate::windowsArrowHMargin;
2256 QFont fontBold = mi->font;
2259 w += fmBold.horizontalAdvance(mi->text) - fm.horizontalAdvance(mi->text);
2262 int checkcol = qMax<int>(maxpmw, QWindowsStylePrivate::windowsCheckMarkWidth);
2264 w += int(QWindowsStylePrivate::windowsRightBorder) + 10;
2269#if QT_CONFIG(menubar)
2270 case CT_MenuBarItem:
2272 sz +=
QSize(QWindowsStylePrivate::windowsItemHMargin * 4, QWindowsStylePrivate::windowsItemVMargin * 2);
2276 if (qstyleoption_cast<const QStyleOptionToolButton *>(
opt))
2277 return sz +=
QSize(7, 6);
2299#include "moc_qwindowsstyle_p.cpp"
The QApplication class manages the GUI application's control flow and main settings.
static QWidget * activeWindow()
Returns the application top-level window that has the keyboard input focus, or \nullptr if no applica...
const QColor & color() const
Returns the brush color.
The QColor class provides colors based on RGB, HSV or CMYK values.
int lightness() const noexcept
The QCommonStyle class encapsulates the common Look and Feel of a GUI.
int pixelMetric(PixelMetric m, const QStyleOption *opt=nullptr, const QWidget *widget=nullptr) const override
\reimp
QSize sizeFromContents(ContentsType ct, const QStyleOption *opt, const QSize &contentsSize, const QWidget *widget=nullptr) const override
\reimp
QRect subElementRect(SubElement r, const QStyleOption *opt, const QWidget *widget=nullptr) const override
\reimp
void unpolish(QWidget *widget) override
\reimp
QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *opt=nullptr, const QWidget *widget=nullptr) const override
QPixmap standardPixmap(StandardPixmap sp, const QStyleOption *opt=nullptr, const QWidget *widget=nullptr) const override
\reimp
void drawControl(ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *w=nullptr) const override
\reimp
int styleHint(StyleHint sh, const QStyleOption *opt=nullptr, const QWidget *w=nullptr, QStyleHintReturn *shret=nullptr) const override
\reimp
void polish(QPalette &) override
\reimp
void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, const QWidget *w=nullptr) const override
\reimp
void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *w=nullptr) const override
\reimp
Type type() const
Returns the event type.
\reentrant \inmodule QtGui
void setBold(bool)
If enable is true sets the font's weight to \l{Weight}{QFont::Bold}; otherwise sets the weight to \l{...
int lineWidth
the line width
QScreen * primaryScreen
the primary (or default) screen of the application.
static QPalette palette()
Returns the current application palette.
static bool desktopSettingsAware()
Returns true if Qt is set to use the system's standard colors, fonts, etc.; otherwise returns false.
static qreal factor(C *context)
The QIcon class provides scalable icons in different modes and states.
Mode
This enum type describes the mode for which a pixmap is intended to be used.
The QKeyEvent class describes a key event.
T findChild(QAnyStringView aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
Returns the child of this object that can be cast into type T and that is called name,...
void installEventFilter(QObject *filterObj)
Installs an event filter filterObj on this object.
virtual bool eventFilter(QObject *watched, QEvent *event)
Filters events if this object has been installed as an event filter for the watched object.
void removeEventFilter(QObject *obj)
Removes an event filter object obj from this object.
QList< T > findChildren(QAnyStringView aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
Returns all children of this object with the given name that can be cast to type T,...
QVariant property(const char *name) const
Returns the value of the object's name property.
void addEllipse(const QRectF &rect)
Creates an ellipse within the specified boundingRectangle and adds it to the painter path as a closed...
The QPainter class performs low-level painting on widgets and other paint devices.
The QPalette class contains color groups for each widget state.
const QBrush & button() const
Returns the button brush of the current color group.
const QBrush & text() const
Returns the text foreground brush of the current color group.
const QBrush & dark() const
Returns the dark brush of the current color group.
const QBrush & brush(ColorGroup cg, ColorRole cr) const
Returns the brush in the specified color group, used for the given color role.
const QBrush & shadow() const
Returns the shadow brush of the current color group.
const QBrush & light() const
Returns the light brush of the current color group.
void setCurrentColorGroup(ColorGroup cg)
Set the palette's current color group to cg.
const QBrush & midlight() const
Returns the midlight brush of the current color group.
void setColor(ColorGroup cg, ColorRole cr, const QColor &color)
Sets the color in the specified color group, used for the given color role, to the specified solid co...
const QBrush & window() const
Returns the window (general background) brush of the current color group.
const QBrush & base() const
Returns the base brush of the current color group.
const QBrush & highlightedText() const
Returns the highlighted text brush of the current color group.
int width() const
Returns the pen width with integer precision.
Returns a copy of the pixmap that is transformed using the given transformation transform and transfo...
static QPixmap fromImage(const QImage &image, Qt::ImageConversionFlags flags=Qt::AutoColor)
Converts the given image to a pixmap using the specified flags to control the conversion.
\inmodule QtCore\reentrant
\inmodule QtCore\reentrant
The QPolygon class provides a list of points using integer precision.
Q_GUI_EXPORT void setPoints(int nPoints, const int *points)
Resizes the polygon to nPoints and populates it with the given points.
\inmodule QtCore\reentrant
\inmodule QtCore\reentrant
constexpr QPoint bottomLeft() const noexcept
Returns the position of the rectangle's bottom-left corner.
constexpr int height() const noexcept
Returns the height of the rectangle.
constexpr int bottom() const noexcept
Returns the y-coordinate of the rectangle's bottom edge.
constexpr QPoint topLeft() const noexcept
Returns the position of the rectangle's top-left corner.
constexpr QRect adjusted(int x1, int y1, int x2, int y2) const noexcept
Returns a new rectangle with dx1, dy1, dx2 and dy2 added respectively to the existing coordinates of ...
constexpr int top() const noexcept
Returns the y-coordinate of the rectangle's top edge.
constexpr QPoint topRight() const noexcept
Returns the position of the rectangle's top-right corner.
constexpr int left() const noexcept
Returns the x-coordinate of the rectangle's left edge.
constexpr int x() const noexcept
Returns the x-coordinate of the rectangle's left edge.
constexpr QRect transposed() const noexcept
constexpr QPoint bottomRight() const noexcept
Returns the position of the rectangle's bottom-right corner.
constexpr int width() const noexcept
Returns the width of the rectangle.
constexpr int y() const noexcept
Returns the y-coordinate of the rectangle's top edge.
constexpr int right() const noexcept
Returns the x-coordinate of the rectangle's right edge.
The QRegion class specifies a clip region for a painter.
The QScreen class is used to query screen properties. \inmodule QtGui.
\macro QT_RESTRICTED_CAST_FROM_ASCII
QString left(qsizetype n) const &
QString mid(qsizetype position, qsizetype n=-1) const &
bool isEmpty() const noexcept
Returns true if the string has no characters; otherwise returns false.
The QStyleHintReturnMask class provides style hints that return a QRegion.
\variable QStyleOptionGraphicsItem::exposedRect
\variable QStyleOptionToolButton::features
\variable QStyleOptionMenuItem::menuItemType
\variable QStyleOption::palette
\variable QStyleOptionFocusRect::backgroundColor
\variable QStyleOptionButton::features
The QStyleOption class stores the parameters used by QStyle functions.
Qt::LayoutDirection direction
PixelMetric
This enum describes the various available pixel metrics.
@ PM_DockWidgetFrameWidth
@ PM_DockWidgetTitleMargin
@ PM_ButtonShiftHorizontal
@ PM_MdiSubWindowFrameWidth
@ PM_DockWidgetTitleBarButtonMargin
@ PM_DockWidgetSeparatorExtent
@ PM_TabBarTabShiftVertical
@ PM_ButtonDefaultIndicator
@ PM_TabBarTabShiftHorizontal
bool toBool() const
Returns the variant as a bool if the variant has userType() Bool.
[Window class with invokable method]
const QStyleOptionButton * btn
[3]
Q_WIDGETS_EXPORT qreal dpiScaled(qreal value, qreal dpi)
Q_WIDGETS_EXPORT qreal dpi(const QStyleOption *option)
Combined button and popup list for selecting options.
static jboolean copy(JNIEnv *, jobject)
bool Q_GUI_EXPORT qHasPixmapTexture(const QBrush &brush)
void qDrawShadePanel(QPainter *p, int x, int y, int w, int h, const QPalette &pal, bool sunken, int lineWidth, const QBrush *fill)
void qDrawWinPanel(QPainter *p, int x, int y, int w, int h, const QPalette &pal, bool sunken, const QBrush *fill)
void qDrawWinButton(QPainter *p, int x, int y, int w, int h, const QPalette &pal, bool sunken, const QBrush *fill)
void qDrawShadeRect(QPainter *p, int x, int y, int w, int h, const QPalette &pal, bool sunken, int lineWidth, int midLineWidth, const QBrush *fill)
static void visualRect(QRectF *geom, Qt::LayoutDirection dir, const QRectF &contentsRect)
constexpr const T & qMax(const T &a, const T &b)
GLboolean GLboolean GLboolean b
GLuint64 GLenum void * handle
GLint GLint GLint GLint GLint x
[0]
GLfloat GLfloat GLfloat w
[0]
GLint GLsizei GLsizei height
GLuint GLfloat GLfloat GLfloat GLfloat y1
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLuint GLfloat GLfloat GLfloat x1
GLenum GLenum GLsizei const GLuint GLboolean enabled
GLenum GLuint GLintptr offset
GLint GLint GLint GLint GLint GLint GLint GLbitfield mask
GLfloat GLfloat GLfloat GLfloat h
GLfixed GLfixed GLint GLint GLfixed points
GLfixed GLfixed GLfixed y2
HICON qt_pixmapToWinHICON(const QPixmap &p)
QT_BEGIN_NAMESPACE typedef unsigned int QRgb
constexpr QRgb qRgb(int r, int g, int b)
SSL_CTX int(* cb)(SSL *ssl, unsigned char **out, unsigned char *outlen, const unsigned char *in, unsigned int inlen, void *arg)
static QT_BEGIN_NAMESPACE QVariant hint(QPlatformIntegration::StyleHint h)
#define COLOR_GRADIENTINACTIVECAPTION
#define SPI_GETKEYBOARDCUES
#define COLOR_GRADIENTACTIVECAPTION
#define QT_BEGIN_INCLUDE_NAMESPACE
#define QT_END_INCLUDE_NAMESPACE
QApplication app(argc, argv)
[0]