
事件篩選 EventFilter
qApp->installEventFilter(this);
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
QString str;
QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event);
QPoint pt = mouseEvent->pos();
unsigned int x, y;
unsigned char r, g, b;
x = pt.x()/scaleFactor;
y = pt.y()/scaleFactor;
switch(event->type())
{
case QEvent::MouseMove:
mouseEvent = static_cast<QMouseEvent*>(event);
// 判斷停留在視窗1或是視窗2
switch(ui->tabWidget->currentIndex())
{
case 0:
str = "視窗1, 解析:" + QString::number(img_rgb1.cols) + "x" + QString::number(img_rgb1.rows)
+", 座標:(" + QString::number(x) + ", "+ QString::number(y) + ")";
getPixel(img_rgb1, y, x, &r, &g, &b);
str += ", RGB = (" + QString::number(r) + "," + QString::number(g) + "," + QString::number(b) + ")";
break;
case 1:
str = "視窗2, 解析:" + QString::number(img_rgb2.cols) + "x" + QString::number(img_rgb2.rows)
+", 座標:(" + QString::number(x) + ", "+ QString::number(y) + ")";
getPixel(img_rgb2, y, x, &r, &g, &b);
str += ", RGB = (" + QString::number(r) + "," + QString::number(g) + "," + QString::number(b) + ")";
break;
}
if(img_rgb1.cols > 0 | img_rgb2.cols)
ui->statusBar->showMessage(str);
break;
case QEvent::MouseButtonPress:
str = "MouseButtonPress(" + QString::number(x) +", " + QString::number(y) + ")";
ui->statusBar->showMessage(str); // 顯示座標
break;
case QEvent::MouseButtonRelease:
str = "MouseButtonRelease(" + QString::number(x) +", " + QString::number(y) + ")";
ui->statusBar->showMessage(str); // 顯示座標
break;
}
return false;
}