+
+bool Analyzer::eventFilter(QObject *watched, QEvent *event)
+{
+ if (event->type() == QEvent::MouseMove &&
+ watched->isWidgetType()) {
+ const QMouseEvent *mouse_event = (QMouseEvent *)event;
+ const QPixmap *pixmap = ui->grabbed_frame_label->pixmap();
+ if (pixmap != nullptr) {
+ int x = lrint(mouse_event->x() * double(pixmap->width()) / ui->grabbed_frame_label->width());
+ int y = lrint(mouse_event->y() * double(pixmap->height()) / ui->grabbed_frame_label->height());
+ x = std::min(x, pixmap->width() - 1);
+ y = std::min(y, pixmap->height() - 1);
+ QRgb pixel = grabbed_image.pixel(x, y);
+ ui->red_label->setText(QString::fromStdString(to_string(qRed(pixel))));
+ ui->green_label->setText(QString::fromStdString(to_string(qGreen(pixel))));
+ ui->blue_label->setText(QString::fromStdString(to_string(qBlue(pixel))));
+
+ char buf[256];
+ snprintf(buf, sizeof(buf), "#%02x%02x%02x", qRed(pixel), qGreen(pixel), qBlue(pixel));
+ ui->hex_label->setText(buf);
+ }
+ }
+ return false;
+}