• 大小: 24.79MB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2023-06-22
  • 语言: 其他
  • 标签: Qt  Halcon  窗口嵌入  VS  

资源简介

配置环境:Qt 5.6.1+VS2015+Halcon12; 本Demo实现了在Qt中调用Halcon; 具体功能:Halcon窗口嵌入到Qt控件,读取任意图片并进行简单的图像处理

资源截图

代码片段和文件信息

#include 
#include 
#include “InteractiveView.h“

#define VIEW_CENTER viewport()->rect().center()
#define VIEW_WIDTH  viewport()->rect().width()
#define VIEW_HEIGHT viewport()->rect().height()

InteractiveView::InteractiveView(QWidget *parent)
: QGraphicsView(parent)
m_translateButton(Qt::LeftButton)
m_scale(1.0)
m_zoomDelta(0.1)
m_translateSpeed(1.0)
m_bMouseTranslate(false)
{
// 去掉滚动条
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setCursor(Qt::PointingHandCursor);
setRenderHint(QPainter::Antialiasing);

setSceneRect(INT_MIN / 2 INT_MIN / 2 INT_MAX INT_MAX);
centerOn(0 0);
}

// 平移速度
void InteractiveView::setTranslateSpeed(qreal speed)
{
// 建议速度范围
Q_ASSERT_X(speed >= 0.0 && speed <= 2.0
“InteractiveView::setTranslateSpeed“ “Speed should be in range [0.0 2.0].“);
m_translateSpeed = speed;
}

qreal InteractiveView::translateSpeed() const
{
return m_translateSpeed;
}

// 缩放的增量
void InteractiveView::setZoomDelta(qreal delta)
{
// 建议增量范围
Q_ASSERT_X(delta >= 0.0 && delta <= 1.0
“InteractiveView::setZoomDelta“ “Delta should be in range [0.0 1.0].“);
m_zoomDelta = delta;
}

qreal InteractiveView::zoomDelta() const
{
return m_zoomDelta;
}

// 上/下/左/右键向各个方向移动、加/减键进行缩放、空格/回车键旋转
void InteractiveView::keyPressEvent(QKeyEvent *event)
{
switch (event->key()) {
case Qt::Key_Up:
translate(QPointF(0 -2));  // 上移
break;
case Qt::Key_Down:
translate(QPointF(0 2));  // 下移
break;
case Qt::Key_Left:
translate(QPointF(-2 0));  // 左移
break;
case Qt::Key_Right:
translate(QPointF(2 0));  // 右移
break;
case Qt::Key_Plus:  // 放大
zoomIn();
break;
case Qt::Key_Minus:  // 缩小
zoomOut();
break;
case Qt::Key_Space:  // 逆时针旋转
rotate(-5);
break;
case Qt::Key_Enter:  // 顺时针旋转
case Qt::Key_Return:
rotate(5);
break;
default:
QGraphicsView::keyPressEvent(event);
}
}

// 平移
void InteractiveView::mouseMoveEvent(QMouseEvent *event)
{
if (m_bMouseTranslate) {
QPointF mouseDelta = mapToScene(event->pos()) - mapToScene(m_lastMousePos);
translate(mouseDelta);
}

m_lastMousePos = event->pos();

QGraphicsView::mouseMoveEvent(event);
}

void InteractiveView::mousePressEvent(QMouseEvent *event)
{
if (event->button() == m_translateButton) {
// 当光标底下没有 item 时,才能移动
QPointF point = mapToScene(event->pos());
if (scene()->itemAt(point transform()) == NULL) {
m_bMouseTranslate = true;
m_lastMousePos = event->pos();
}
}

QGraphicsView::mousePressEvent(event);
}

void InteractiveView::mouseReleaseEvent(QMouseEvent *event)
{
if (event->button() == m_translateButton)
m_bMouseTranslate = false;

QGraphicsView::mouseReleaseEvent(event);
}

// 放大/缩小
void InteractiveView::wheelEvent(QWheelEvent *event)
{
// 滚轮的滚动量
QPoint scrollAmount = event->angleDelta();
// 正值表示滚轮远离使用者(放大),负值表示朝向使用

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-08-28 11:23  RefDemo\
     目录           0  2018-08-28 11:23  RefDemo\.vs\
     目录           0  2018-08-28 11:23  RefDemo\.vs\RefDemo\
     目录           0  2018-08-28 11:23  RefDemo\.vs\RefDemo\v14\
     文件       29184  2018-07-26 15:55  RefDemo\.vs\RefDemo\v14\.suo
     目录           0  2018-08-28 11:23  RefDemo\RefDemo\
     目录           0  2018-08-28 11:23  RefDemo\RefDemo\Debug\
     文件      107448  2018-07-25 14:36  RefDemo\RefDemo\Debug\InteractiveView.obj
     文件         134  2018-07-25 14:36  RefDemo\RefDemo\Debug\RefDemo.log
     文件      252798  2018-07-25 14:36  RefDemo\RefDemo\Debug\RefDemo.obj
     目录           0  2018-08-28 11:23  RefDemo\RefDemo\Debug\RefDemo.tlog\
     文件       13470  2018-07-25 14:36  RefDemo\RefDemo\Debug\RefDemo.tlog\CL.command.1.tlog
     文件      253418  2018-07-25 14:36  RefDemo\RefDemo\Debug\RefDemo.tlog\CL.read.1.tlog
     文件        5340  2018-07-25 14:36  RefDemo\RefDemo\Debug\RefDemo.tlog\CL.write.1.tlog
     文件         180  2018-07-25 14:36  RefDemo\RefDemo\Debug\RefDemo.tlog\RefDemo.lastbuildstate
     文件        4346  2018-07-25 14:36  RefDemo\RefDemo\Debug\RefDemo.tlog\RefDemo.write.1u.tlog
     文件        4010  2018-07-25 14:36  RefDemo\RefDemo\Debug\RefDemo.tlog\link.command.1.tlog
     文件        8110  2018-07-25 14:36  RefDemo\RefDemo\Debug\RefDemo.tlog\link.read.1.tlog
     文件        1702  2018-07-25 14:36  RefDemo\RefDemo\Debug\RefDemo.tlog\link.write.1.tlog
     文件      101341  2018-07-25 14:36  RefDemo\RefDemo\Debug\main.obj
     文件       72659  2018-07-25 14:36  RefDemo\RefDemo\Debug\moc_InteractiveView.obj
     文件      104910  2018-07-25 14:36  RefDemo\RefDemo\Debug\moc_RefDemo.obj
     文件        5477  2018-07-25 14:36  RefDemo\RefDemo\Debug\qrc_RefDemo.obj
     文件        1222  2018-07-25 14:36  RefDemo\RefDemo\Debug\qt.log
     文件     2338816  2018-07-25 14:36  RefDemo\RefDemo\Debug\vc140.pdb
     目录           0  2018-08-28 11:23  RefDemo\RefDemo\GeneratedFiles\
     目录           0  2018-08-28 11:23  RefDemo\RefDemo\GeneratedFiles\Debug\
     文件        4221  2018-07-25 14:36  RefDemo\RefDemo\GeneratedFiles\Debug\moc_InteractiveView.cpp
     文件        3733  2018-07-25 14:36  RefDemo\RefDemo\GeneratedFiles\Debug\moc_RefDemo.cpp
     文件        1396  2018-07-25 14:36  RefDemo\RefDemo\GeneratedFiles\qrc_RefDemo.cpp
     文件        3585  2018-07-25 14:36  RefDemo\RefDemo\GeneratedFiles\ui_RefDemo.h
............此处省略22个文件信息

评论

共有 条评论