📄 qwindowsstyle.cpp
字号:
"....bbbbbbbbbbbbbbbbbbbbbbbbbbb.",".....bbbbbbbbbbbbbbbbbbbbbbbbb.."};/* XPM */static const char* const critical_xpm[]={"32 32 4 1",". c None","a c #999999","* c #ff0000","b c #ffffff","...........********.............",".........************...........",".......****************.........","......******************........",".....********************a......","....**********************a.....","...************************a....","..*******b**********b*******a...","..******bbb********bbb******a...",".******bbbbb******bbbbb******a..",".*******bbbbb****bbbbb*******a..","*********bbbbb**bbbbb*********a.","**********bbbbbbbbbb**********a.","***********bbbbbbbb***********aa","************bbbbbb************aa","************bbbbbb************aa","***********bbbbbbbb***********aa","**********bbbbbbbbbb**********aa","*********bbbbb**bbbbb*********aa",".*******bbbbb****bbbbb*******aa.",".******bbbbb******bbbbb******aa.","..******bbb********bbb******aaa.","..*******b**********b*******aa..","...************************aaa..","....**********************aaa...","....a********************aaa....",".....a******************aaa.....","......a****************aaa......",".......aa************aaaa.......",".........aa********aaaaa........","...........aaaaaaaaaaa..........",".............aaaaaaa............"};/* XPM */static const char *const question_xpm[] = {"32 32 5 1",". c None","c c #000000","* c #999999","a c #ffffff","b c #0000ff","...........********.............","........***aaaaaaaa***..........","......**aaaaaaaaaaaaaa**........",".....*aaaaaaaaaaaaaaaaaa*.......","....*aaaaaaaaaaaaaaaaaaaac......","...*aaaaaaaabbbbbbaaaaaaaac.....","..*aaaaaaaabaaabbbbaaaaaaaac....",".*aaaaaaaabbaaaabbbbaaaaaaaac...",".*aaaaaaaabbbbaabbbbaaaaaaaac*..","*aaaaaaaaabbbbaabbbbaaaaaaaaac*.","*aaaaaaaaaabbaabbbbaaaaaaaaaac*.","*aaaaaaaaaaaaabbbbaaaaaaaaaaac**","*aaaaaaaaaaaaabbbaaaaaaaaaaaac**","*aaaaaaaaaaaaabbaaaaaaaaaaaaac**","*aaaaaaaaaaaaabbaaaaaaaaaaaaac**","*aaaaaaaaaaaaaaaaaaaaaaaaaaaac**",".*aaaaaaaaaaaabbaaaaaaaaaaaac***",".*aaaaaaaaaaabbbbaaaaaaaaaaac***","..*aaaaaaaaaabbbbaaaaaaaaaac***.","...caaaaaaaaaabbaaaaaaaaaac****.","....caaaaaaaaaaaaaaaaaaaac****..",".....caaaaaaaaaaaaaaaaaac****...","......ccaaaaaaaaaaaaaacc****....",".......*cccaaaaaaaaccc*****.....","........***cccaaaac*******......","..........****caaac*****........",".............*caaac**...........","...............caac**...........","................cac**...........",".................cc**...........","..................***...........","...................**..........."};#endif //QT_NO_IMAGEFORMAT_XPM/*! \reimp */QPixmap QWindowsStyle::standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt, const QWidget *widget) const{#ifdef Q_WS_WIN QPixmap desktopIcon; switch(standardPixmap) { case SP_DriveCDIcon: case SP_DriveDVDIcon: { desktopIcon = loadIconFromShell32(12, 16); break; } case SP_DriveNetIcon: { desktopIcon = loadIconFromShell32(10, 16); break; } case SP_DriveHDIcon: { desktopIcon = loadIconFromShell32(9, 16); break; } case SP_DriveFDIcon: { desktopIcon = loadIconFromShell32(7, 16); break; } case SP_FileIcon: { desktopIcon = loadIconFromShell32(1, 16); break; } case SP_FileLinkIcon: { desktopIcon = loadIconFromShell32(1, 16); QPainter painter(&desktopIcon); QPixmap link = loadIconFromShell32(30, 16); painter.drawPixmap(0, 0, 16, 16, link); break; } case SP_DirLinkIcon: { desktopIcon = loadIconFromShell32(4, 16); QPainter painter(&desktopIcon); QPixmap link = loadIconFromShell32(30, 16); painter.drawPixmap(0, 0, 16, 16, link); break; } case SP_DirClosedIcon: { desktopIcon = loadIconFromShell32(4, 16); break; } case SP_DesktopIcon: { desktopIcon = loadIconFromShell32(35, 16); break; } case SP_ComputerIcon: { desktopIcon = loadIconFromShell32(16, 16); break; } case SP_DirOpenIcon: { desktopIcon = loadIconFromShell32(5, 16); break; } case SP_FileDialogNewFolder: { desktopIcon = loadIconFromShell32(319, 16); break; } case SP_DirHomeIcon: { desktopIcon = loadIconFromShell32(235, 16); break; } case SP_TrashIcon: { desktopIcon = loadIconFromShell32(191, 16); break; } case SP_MessageBoxInformation: { HICON iconHandle = LoadIcon(NULL, IDI_INFORMATION); desktopIcon = convertHIconToPixmap( iconHandle ); DestroyIcon(iconHandle); break; } case SP_MessageBoxWarning: { HICON iconHandle = LoadIcon(NULL, IDI_WARNING); desktopIcon = convertHIconToPixmap( iconHandle ); DestroyIcon(iconHandle); break; } case SP_MessageBoxCritical: { HICON iconHandle = LoadIcon(NULL, IDI_ERROR); desktopIcon = convertHIconToPixmap( iconHandle ); DestroyIcon(iconHandle); break; } case SP_MessageBoxQuestion: { HICON iconHandle = LoadIcon(NULL, IDI_QUESTION); desktopIcon = convertHIconToPixmap( iconHandle ); DestroyIcon(iconHandle); break; } case SP_VistaShield: { if (QSysInfo::WindowsVersion >= QSysInfo::WV_VISTA && QSysInfo::WindowsVersion < QSysInfo::WV_NT_based && pSHGetStockIconInfo) { QPixmap pixmap; QSHSTOCKICONINFO iconInfo; memset(&iconInfo, 0, sizeof(iconInfo)); iconInfo.cbSize = sizeof(iconInfo); if (pSHGetStockIconInfo(_SIID_SHIELD, _SHGFI_ICON | _SHGFI_SMALLICON, &iconInfo) == S_OK) { pixmap = convertHIconToPixmap(iconInfo.hIcon); DestroyIcon(iconInfo.hIcon); return pixmap; } } } break; } if (!desktopIcon.isNull()) { return desktopIcon; }#endif#ifndef QT_NO_IMAGEFORMAT_XPM switch (standardPixmap) { case SP_TitleBarMenuButton: return QPixmap(qt_menu_xpm); case SP_TitleBarShadeButton: return QPixmap(qt_shade_xpm); case SP_TitleBarUnshadeButton: return QPixmap(qt_unshade_xpm); case SP_TitleBarNormalButton: return QPixmap(qt_normalizeup_xpm); case SP_TitleBarMinButton: return QPixmap(qt_minimize_xpm); case SP_TitleBarMaxButton: return QPixmap(qt_maximize_xpm); case SP_TitleBarCloseButton: return QPixmap(qt_close_xpm); case SP_TitleBarContextHelpButton: return QPixmap(qt_help_xpm); case SP_DockWidgetCloseButton: return QPixmap(dock_widget_close_xpm); case SP_MessageBoxInformation: return QPixmap(information_xpm); case SP_MessageBoxWarning: return QPixmap(warning_xpm); case SP_MessageBoxCritical: return QPixmap(critical_xpm); case SP_MessageBoxQuestion: return QPixmap(question_xpm); default: break; }#endif //QT_NO_IMAGEFORMAT_XPM return QCommonStyle::standardPixmap(standardPixmap, opt, widget);}/*! \reimp */int QWindowsStyle::styleHint(StyleHint hint, const QStyleOption *opt, const QWidget *widget, QStyleHintReturn *returnData) const{ int ret = 0; switch (hint) { case SH_EtchDisabledText: case SH_Slider_SnapToValue: case SH_PrintDialog_RightAlignButtons: case SH_FontDialog_SelectAssociatedText: case SH_Menu_AllowActiveAndDisabled: case SH_MenuBar_AltKeyNavigation: case SH_MenuBar_MouseTracking: case SH_Menu_MouseTracking: case SH_ComboBox_ListMouseTracking: case SH_ScrollBar_StopMouseOverSlider: case SH_MainWindow_SpaceBelowMenuBar: ret = 1; break; case SH_ItemView_ChangeHighlightOnFocus:#if defined(Q_WS_WIN) if (QSysInfo::WindowsVersion != QSysInfo::WV_95 && QSysInfo::WindowsVersion != QSysInfo::WV_NT) ret = 1; else#endif ret = 0; break; case SH_ToolBox_SelectedPageTitleBold: ret = 0; break;#if defined(Q_WS_WIN) case SH_UnderlineShortcut: ret = 1; if (QSysInfo::WindowsVersion != QSysInfo::WV_95 && QSysInfo::WindowsVersion != QSysInfo::WV_98 && QSysInfo::WindowsVersion != QSysInfo::WV_NT) { BOOL cues; SystemParametersInfo(SPI_GETKEYBOARDCUES, 0, &cues, 0); ret = int(cues); // Do nothing if we always paint underlines Q_D(const QWindowsStyle); if (!ret && widget && d) {#ifndef QT_NO_MENUBAR const QMenuBar *menuBar = ::qobject_cast<const QMenuBar*>(widget); if (!menuBar && ::qobject_cast<const QMenu *>(widget)) { QWidget *w = QApplication::activeWindow(); if (w && w != widget) menuBar = qFindChild<QMenuBar *>(w); } // If we paint a menu bar draw underlines if it has focus, or if alt is down, // or if a popup menu belonging to the menu bar is active and paints underlines if (menuBar) { if (menuBar->hasFocus() || d->altDown()) ret = 1; // Otherwise draw underlines if the toplevel widget has seen an alt-press } else#endif // QT_NO_MENUBAR if (d->hasSeenAlt(widget)) { ret = 1; } } } break;#endif#ifndef QT_NO_RUBBERBAND case SH_RubberBand_Mask: if (const QStyleOptionRubberBand *rbOpt = qstyleoption_cast<const QStyleOptionRubberBand *>(opt)) { ret = 0; if (rbOpt->shape == QRubberBand::Rectangle) { ret = true; if(QStyleHintReturnMask *mask = qstyleoption_cast<QStyleHintReturnMask*>(returnData)) { mask->region = opt->rect; int size = 1; if (widget && widget->isWindow()) size = 4; mask->region -= opt->rect.adjusted(size, size, -size, -size); } } } break;#endif // QT_NO_RUBBERBAND case SH_LineEdit_PasswordCharacter: {#ifdef Q_WS_WIN if (widget && (QSysInfo::WindowsVersion >= QSysInfo::WV_XP && QSysInfo::WindowsVersion < QSysInfo::WV_NT_based)) { const QFontMetrics &fm = widget->fontMetrics(); if (fm.inFont(QChar(0x25CF))) ret = 0x25CF; else if (fm.inFont(QChar(0x2022))) ret = 0x2022; }#endif if (!ret) ret = '*'; } break;#ifndef QT_NO_WIZARD case SH_WizardStyle: ret = QWizard::ModernStyle; break;#endif case SH_ItemView_ArrowKeysNavigateIntoChildren: ret = true; break; default: ret = QCommonStyle::styleHint(hint, opt, widget, returnData); break; } return ret;}/*! \reimp */void QWindowsStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -