資源簡(jiǎn)介
配置環(huán)境:Qt 5.6.1+VS2015+Halcon12;
本Demo實(shí)現(xiàn)了在Qt中調(diào)用Halcon;
具體功能:Halcon窗口嵌入到Qt控件,讀取任意圖片并進(jìn)行簡(jiǎn)單的圖像處理
代碼片段和文件信息
#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)
{
//?去掉滾動(dòng)條
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;
}
//?上/下/左/右鍵向各個(gè)方向移動(dòng)、加/減鍵進(jìn)行縮放、空格/回車鍵旋轉(zhuǎn)
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:??//?逆時(shí)針旋轉(zhuǎn)
rotate(-5);
break;
case?Qt::Key_Enter:??//?順時(shí)針旋轉(zhuǎn)
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)?{
//?當(dāng)光標(biāo)底下沒(méi)有?item?時(shí),才能移動(dòng)
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)
{
//?滾輪的滾動(dòng)量
QPoint?scrollAmount?=?event->angleDelta();
//?正值表示滾輪遠(yuǎn)離使用者(放大),負(fù)值表示朝向使用
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????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個(gè)文件信息
評(píng)論
共有 條評(píng)論