其他分享
首页 > 其他分享> > Qt练手小项目之颜色提取器

Qt练手小项目之颜色提取器

作者:互联网

    疫情结束,学习先行。今天的Qt练手小项目为颜色提取器。这个小应用相当简单,左侧是显示鼠标所在位置的颜色,右侧三个数值表示的是鼠标所在位置颜色的16进制值、RGB值和鼠标位置坐标。 截图如下:

    

     重要代码解析如下:

     首先是获取鼠标位置,这里我们使用 QCursor::pos()获取,然后将位置值传给第三个输入框。

     QPoint mousePos = QCursor::pos();
     QString PosStr = QString("X:%1 Y:%2").arg(mousePos.x()).arg(mousePos.y());
     PosEdit->setText(PosStr);

     其次要获取鼠标所在位置的颜色值,则需要先抓取屏幕,然后对抓取的屏幕图片进行分析。

    //抓取屏幕
    m_screen = windowHandle()->screen();
    QPixmap pixmap = m_screen->grabWindow(QApplication::desktop()->winId(), mousePos.x(), mousePos.y(), 1, 1);

    if (!pixmap.isNull())
    {
        QImage image = pixmap.toImage();
        if (!image.isNull())
        {
            QColor color = image.pixel(0, 0);
            m_red     = color.red();
            m_green = color.green();
            m_blue   = color.blue();

            QString rgbStr = QString("%1, %2, %3").arg(m_red).arg(m_green).arg(m_blue);
            RGBEdit->setText(rgbStr);

            //十进制转16进制
            QString rStr = QString("%1").arg(m_red & 0xFF, 2, 16, QChar('0'));
            QString gStr = QString("%1").arg(m_green & 0xFF, 2, 16, QChar('0'));
            QString bstr = QString("%1").arg(m_blue & 0xFF, 2, 16, QChar('0'));
            WebEdit->setText("#" + rStr + gStr + bstr);

            //左侧label绘制颜色
            QString str = tr("background-color: rgb(%1); border:2px solid #C0C0C0").arg(rgbStr);
            ColorLabel->setStyleSheet(str);
        }

 

    这个项目我会上传到资源页,积分收取1分。有需要的可以下载看看。

    https://download.csdn.net/download/dzhongjie/12251135

标签:练手,mousePos,提取,Qt,16,color,QString,arg,鼠标
来源: https://blog.csdn.net/dzhongjie/article/details/104892207