首先参考了以下博客,感谢:
- 十亦山雨的 《VS+Qt应用开发-Qt+Halcon显示图片,实现鼠标缩放、移动图片》(看评论区说暂时无法实现鼠标悬浮显示灰度值)
- 进击的路飞桑的《Halcon+Winform实现图像缩放等功能》(C#版本)
先看效果:
代码:
//mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
//Halcon
#include "D:/Halcon/include/halconcpp/HalconCpp.h"
using namespace HalconCpp;
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
double RowDown;
double ColDown;
HObject ho_image;
HTuple winID, ImageWidth, ImageHeight;
void wheelEvent(QWheelEvent *ev);
void mousePressEvent(QMouseEvent *ev);
void mouseReleaseEvent(QMouseEvent *ev);
void HoverMove(QHoverEvent *ev);
bool eventFilter(QObject * obj, QEvent * event);
};
#endif // MAINWINDOW_H
//mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QWheelEvent>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
OpenWindow(0, 0, ui->label->width(), ui->label->height(),
(Hlong)ui->label->winId(), "visible", "", &winID