⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qwindowsstyle.cpp

📁 qt-x11-opensource-src-4.1.4.tar.gz源码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    "* c #999999",    "c c #cccccc",    "a c #ffffff",    "................",    "................",    "...*****........",    "..*aaaaa*.......",    ".*abcbcba******.",    ".*acbcbcaaaaaa*d",    ".*abcbcbcbcbcb*d",    "*************b*d",    "*aaaaaaaaaa**c*d",    "*abcbcbcbcbbd**d",    ".*abcbcbcbcbcd*d",    ".*acbcbcbcbcbd*d",    "..*acbcbcbcbb*dd",    "..*************d",    "...ddddddddddddd",    "................"};/* XPM */static const char * const dir_closed_xpm[]={    "16 16 6 1",    ". c None",    "b c #ffff00",    "d c #000000",    "* c #999999",    "a c #cccccc",    "c c #ffffff",    "................",    "................",    "..*****.........",    ".*ababa*........",    "*abababa******..",    "*cccccccccccc*d.",    "*cbababababab*d.",    "*cabababababa*d.",    "*cbababababab*d.",    "*cabababababa*d.",    "*cbababababab*d.",    "*cabababababa*d.",    "*cbababababab*d.",    "**************d.",    ".dddddddddddddd.",    "................"};/* XPM */static const char * const dir_link_xpm[]={    "16 16 10 1",    "h c #808080",    "g c #a0a0a0",    "d c #000000",    "b c #ffff00",    "f c #303030",    "# c #999999",    "a c #cccccc",    "e c #585858",    "c c #ffffff",    ". c None",    "................",    "................",    "..#####.........",    ".#ababa#........",    "#abababa######..",    "#cccccccccccc#d.",    "#cbababababab#d.",    "#cabababababa#d.",    "#cbababdddddddd.",    "#cababadccccccd.",    "#cbababdcececcd.",    "#cababadcefdfcd.",    "#cbababdccgdhcd.",    "#######dccchccd.",    ".dddddddddddddd.",    "................"};/* XPM */static const char* const file_xpm[]={    "16 16 5 1",    ". c #7f7f7f",    "# c None",    "c c #000000",    "b c #bfbfbf",    "a c #ffffff",    "################",    "..........######",    ".aaaaaaaab.#####",    ".aaaaaaaaba.####",    ".aaaaaaaacccc###",    ".aaaaaaaaaabc###",    ".aaaaaaaaaabc###",    ".aaaaaaaaaabc###",    ".aaaaaaaaaabc###",    ".aaaaaaaaaabc###",    ".aaaaaaaaaabc###",    ".aaaaaaaaaabc###",    ".aaaaaaaaaabc###",    ".aaaaaaaaaabc###",    ".bbbbbbbbbbbc###",    "ccccccccccccc###"};/* XPM */static const char * const file_link_xpm[]={    "16 16 10 1",    "h c #808080",    "g c #a0a0a0",    "d c #c3c3c3",    ". c #7f7f7f",    "c c #000000",    "b c #bfbfbf",    "f c #303030",    "e c #585858",    "a c #ffffff",    "# c None",    "################",    "..........######",    ".aaaaaaaab.#####",    ".aaaaaaaaba.####",    ".aaaaaaaacccc###",    ".aaaaaaaaaabc###",    ".aaaaaaaaaabc###",    ".aaaaaaaaaadc###",    ".aaaaaaaaaadc###",    ".aaaacccccccc###",    ".aaaacaaaaaac###",    ".aaaacaeaeaac###",    ".aaaacaefcfac###",    ".aaaacaagchac###",    ".ddddcaaahaac###",    "ccccccccccccc###"};#endif //QT_NO_IMAGEFORMAT_XPM#ifdef Q_WS_WINQPixmap convertHIconToPixmap( const HICON icon){    bool foundAlpha = false;    HDC screenDevice = qt_win_display_dc();    HDC hdc = CreateCompatibleDC(screenDevice);    ICONINFO iconinfo;    GetIconInfo(icon, &iconinfo); //x and y Hotspot describes the icon center    //create image    HBITMAP winBitmap = CreateBitmap(iconinfo.xHotspot * 2, iconinfo.yHotspot * 2, 1, 32, 0);    HGDIOBJ oldhdc = SelectObject(hdc, winBitmap);    DrawIconEx( hdc, 0, 0, icon, iconinfo.xHotspot * 2, iconinfo.yHotspot * 2, 0, 0, DI_NORMAL);    QPixmap::HBitmapFormat alphaType = QPixmap::PremultipliedAlpha;    BITMAP bitmapData;    GetObject(iconinfo.hbmColor, sizeof(BITMAP), &bitmapData);    QPixmap iconpixmap = QPixmap::fromWinHBITMAP(winBitmap, alphaType);    QImage img = iconpixmap.toImage();    if ( bitmapData.bmBitsPixel == 32 ) { //only check 32 bit images for alpha        for (int y = 0 ; y < iconpixmap.height() && !foundAlpha ; y++) {            QRgb *scanLine= reinterpret_cast<QRgb *>(img.scanLine(y));            for (int x = 0; x < img.width() ; x++) {                if (qAlpha(scanLine[x]) != 0) {                    foundAlpha = true;                    break;                }            }        }    }    if (!foundAlpha) {        //If no alpha was found, we use the mask to set alpha values        HBITMAP winMask = CreateBitmap(iconinfo.xHotspot * 2, iconinfo.yHotspot * 2, 1, 32, 0);        SelectObject(hdc, winMask);        DrawIconEx( hdc, 0, 0, icon, iconinfo.xHotspot * 2, iconinfo.yHotspot * 2, 0, 0, DI_MASK);        QPixmap maskPixmap = QPixmap::fromWinHBITMAP(winMask, alphaType);        QImage mask = maskPixmap.toImage();        for (int y = 0 ; y< iconpixmap.height() ; y++){            QRgb *scanlineImage = reinterpret_cast<QRgb *>(img.scanLine(y));            QRgb *scanlineMask = reinterpret_cast<QRgb *>(mask.scanLine(y));            for (int x = 0; x < img.width() ; x++){                if (qRed(scanlineMask[x]) != 0)                    scanlineImage[x] = 0; //mask out this pixel                else                    scanlineImage[x] |= 0xff000000; // set the alpha channel to 255            }        }        DeleteObject(winMask);    }    //dispose resources created by iconinfo call    DeleteObject(iconinfo.hbmMask);    DeleteObject(iconinfo.hbmColor);    SelectObject(hdc, oldhdc); //restore state    DeleteDC(hdc);    DeleteObject(winBitmap);    return QPixmap::fromImage(img);}QPixmap loadIconFromShell32( int resourceId, int size ){    HMODULE hmod = LoadLibraryA("shell32.dll");    if( hmod ) {        HICON iconHandle = (HICON)LoadImage(hmod, MAKEINTRESOURCE(resourceId), IMAGE_ICON, size, size, 0);        if( iconHandle ) {            QPixmap iconpixmap = convertHIconToPixmap( iconHandle );            DestroyIcon(iconHandle);            return iconpixmap;        }    }    return QPixmap();}#endif/*! \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_FileDialogToParent:        {            desktopIcon = loadIconFromShell32(255, 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;        }    }    if (!desktopIcon.isNull()) {        return desktopIcon;    }#endif#ifndef QT_NO_IMAGEFORMAT_XPM    switch (standardPixmap) {    case SP_TitleBarMenuButton:        return QPixmap((const char **)qt_menu_xpm);    case SP_TitleBarShadeButton:        return QPixmap((const char **)qt_shade_xpm);    case SP_TitleBarUnshadeButton:        return QPixmap((const char **)qt_unshade_xpm);    case SP_TitleBarNormalButton:        return QPixmap((const char **)qt_normalizeup_xpm);    case SP_TitleBarMinButton:        return QPixmap((const char **)qt_minimize_xpm);    case SP_TitleBarMaxButton:        return QPixmap((const char **)qt_maximize_xpm);    case SP_TitleBarCloseButton:        return QPixmap((const char **)qt_close_xpm);    case SP_TitleBarContextHelpButton:        return QPixmap((const char **)qt_help_xpm);    case SP_DockWidgetCloseButton:        return QPixmap((const char **)dock_widget_close_xpm);    case SP_MessageBoxInformation:        return QPixmap((const char **)information_xpm);    case SP_MessageBoxWarning:        return QPixmap((const char **)warning_xpm);    case SP_MessageBoxCritical:        return QPixmap((const char **)critical_xpm);    case SP_MessageBoxQuestion:        return QPixmap((const char **)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:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -