疫情结束,学习先行。今天的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