资源简介
配置环境: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\li
文件 8110 2018-07-25 14:36 RefDemo\RefDemo\Debug\RefDemo.tlog\li
文件 1702 2018-07-25 14:36 RefDemo\RefDemo\Debug\RefDemo.tlog\li
文件 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个文件信息
相关资源
- HALCON使用手册简体中文版
- Ubuntu下操作Excel,qt代码
- Qt图片浏览器 --基于Qt的Graphics View f
- qtnribbon2破解
- Qt软件开发 完整项目代码
- MQTT_3.1protocol_Specific中文版
- 在QT中使用RTP进行视频的采集和传输
- Halcon画刷和橡皮以及鼠标选取ROI源码
- Mini6410 Qt4和Qtopia编程开发指南
- halcon1032位和64位完美破解版.rar
- Qt实现Code39条形码
- qt_ffmpeg_mp4_export_and_import.zip
- QT5.5入门与项目实战
- Huffman Compress 霍夫曼编码 压缩 解压缩
- 基于QT的黑白棋游戏设计和实现
- Qt写的连连看小游戏
- QTranslate_6.7.2.7z
- Qt基于FFmpeg播放本地 H.264H264文件
- QT编的MP3播放器
- linux系统的二级文件系统(QT实现了简
- QT生成DLL库文件的方法和使用方法详解
- QT+opencv+OCR 身份证号码,银行卡号识别
- Qt实现的简单的中国象棋程序
- Qt时钟Demo,在原来基础上添加了秒针
- 基于Qt和opencv的身份证号码识别系统
- 基于FFmpeg4.0.2的AAC编码器
- Qt写的Windows下屏幕录制程序源码
- QT旅游攻略软件程序源代码
- mp4_play.zip
- ffmpeg+qt的简单播放器
评论
共有 条评论