HGGitLab
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
app
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
CI / CD Analytics
Repository Analytics
Value Stream Analytics
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
luoliangyi
app
Commits
1cc1a793
Commit
1cc1a793
authored
Mar 25, 2022
by
luoliangyi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
解决图像显示控件滚动条不能正常绘制的问题
parent
62f03368
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
102 additions
and
56 deletions
+102
-56
app/Scanner/Scanner/mainwindow.cpp
app/Scanner/Scanner/mainwindow.cpp
+61
-26
ui/HGImgThumb.cpp
ui/HGImgThumb.cpp
+4
-0
ui/HGImgView.cpp
ui/HGImgView.cpp
+36
-29
ui/HGImgView.hpp
ui/HGImgView.hpp
+1
-1
No files found.
app/Scanner/Scanner/mainwindow.cpp
View file @
1cc1a793
...
...
@@ -44,44 +44,79 @@ MainWindow::MainWindow(QWidget *parent)
connect
(
m_thumb
,
SIGNAL
(
itemDoubleClicked
(
int
)),
this
,
SLOT
(
on_itemDoubleClicked
(
int
)));
m_view
->
enableScroll
(
true
);
m_view
->
setScrollSize
(
16
);
m_view
->
setMinScrollSliderSize
(
20
);
HGImage
img
=
NULL
;
HGImgFmt_LoadImage
(
"D:
\\
1.jpg"
,
0
,
NULL
,
HGBASE_IMGTYPE_RGB
,
HGBASE_IMGORIGIN_TOP
,
&
img
);
m_view
->
addImage
(
img
);
HGBase_DestroyImage
(
img
);
QImage
img2
(
"D:
\\
ImageSrc
\\
image.png"
);
m_thumb
->
setDefItemImage
(
&
img2
);
m_thumb
->
setType
(
HGImgThumb
::
ThumbType_Grid
);
m_thumb
->
setGapSize
(
10
);
QImage
defItemImage
(
"D:
\\
ImageSrc
\\
defItemImage.png"
);
m_thumb
->
setDefItemImage
(
&
defItemImage
);
m_thumb
->
setType
(
HGImgThumb
::
ThumbType_Hori
);
m_thumb
->
setItemSize
(
80
);
//m_thumb->setItemTextHeight(0);
m_thumb
->
setScrollSize
(
10
);
m_thumb
->
setScrollSize
(
16
);
m_thumb
->
setMinScrollSliderSize
(
20
);
QImage
leftNormalImg
(
"D:
\\
ImageSrc
\\
1.png"
);
QImage
leftHotImg
(
"D:
\\
ImageSrc
\\
2.png"
);
QImage
leftPushImg
(
"D:
\\
ImageSrc
\\
3.png"
);
QImage
hScrollImage
(
"D:
\\
ImageSrc
\\
hScrollImage.png"
);
m_thumb
->
setHScrollImage
(
&
hScrollImage
,
NULL
);
m_view
->
setHScrollImage
(
&
hScrollImage
,
NULL
);
QImage
vScrollImage
(
"D:
\\
ImageSrc
\\
vScrollImage.png"
);
m_thumb
->
setVScrollImage
(
&
vScrollImage
,
NULL
);
m_view
->
setVScrollImage
(
&
vScrollImage
,
NULL
);
QImage
leftNormalImg
(
"D:
\\
ImageSrc
\\
left_Normal.png"
);
QImage
leftHotImg
(
"D:
\\
ImageSrc
\\
left_Hot.png"
);
QImage
leftPushImg
(
"D:
\\
ImageSrc
\\
left_Push.png"
);
m_thumb
->
setHScrollLeftImage
(
&
leftNormalImg
,
&
leftHotImg
,
&
leftPushImg
);
m_thumb
->
setHScrollRightImage
(
&
leftNormalImg
,
&
leftHotImg
,
&
leftPushImg
);
m_thumb
->
setVScrollTopImage
(
&
leftNormalImg
,
&
leftHotImg
,
&
leftPushImg
);
m_thumb
->
setVScrollBottomImage
(
&
leftNormalImg
,
&
leftHotImg
,
&
leftPushImg
);
m_view
->
setHScrollLeftImage
(
&
leftNormalImg
,
&
leftHotImg
,
&
leftPushImg
);
QImage
rightNormalImg
(
"D:
\\
ImageSrc
\\
right_Normal.png"
);
QImage
rightHotImg
(
"D:
\\
ImageSrc
\\
right_Hot.png"
);
QImage
rightPushImg
(
"D:
\\
ImageSrc
\\
right_Push.png"
);
m_thumb
->
setHScrollRightImage
(
&
rightNormalImg
,
&
rightHotImg
,
&
rightPushImg
);
m_view
->
setHScrollRightImage
(
&
rightNormalImg
,
&
rightHotImg
,
&
rightPushImg
);
QImage
topNormalImg
(
"D:
\\
ImageSrc
\\
top_Normal.png"
);
QImage
topHotImg
(
"D:
\\
ImageSrc
\\
top_Hot.png"
);
QImage
topPushImg
(
"D:
\\
ImageSrc
\\
top_Push.png"
);
m_thumb
->
setVScrollTopImage
(
&
topNormalImg
,
&
topHotImg
,
&
topPushImg
);
m_view
->
setVScrollTopImage
(
&
topNormalImg
,
&
topHotImg
,
&
topPushImg
);
QImage
bottomNormalImg
(
"D:
\\
ImageSrc
\\
bottom_Normal.png"
);
QImage
bottomHotImg
(
"D:
\\
ImageSrc
\\
bottom_Hot.png"
);
QImage
bottomPushImg
(
"D:
\\
ImageSrc
\\
bottom_Push.png"
);
m_thumb
->
setVScrollBottomImage
(
&
bottomNormalImg
,
&
bottomHotImg
,
&
bottomPushImg
);
m_view
->
setVScrollBottomImage
(
&
bottomNormalImg
,
&
bottomHotImg
,
&
bottomPushImg
);
HGRect
hSliderStretchRect
=
{
4
,
0
,
196
,
16
};
QImage
hScrollSliderNormalImage
(
"D:
\\
ImageSrc
\\
hScrollSlider_Normal.png"
);
QImage
hScrollSliderHotImage
(
"D:
\\
ImageSrc
\\
hScrollSlider_Hot.png"
);
QImage
hScrollSliderPushImage
(
"D:
\\
ImageSrc
\\
hScrollSlider_Push.png"
);
m_thumb
->
setHScrollSliderImage
(
&
hScrollSliderNormalImage
,
&
hSliderStretchRect
,
&
hScrollSliderHotImage
,
&
hSliderStretchRect
,
&
hScrollSliderPushImage
,
&
hSliderStretchRect
);
m_view
->
setHScrollSliderImage
(
&
hScrollSliderNormalImage
,
&
hSliderStretchRect
,
&
hScrollSliderHotImage
,
&
hSliderStretchRect
,
&
hScrollSliderPushImage
,
&
hSliderStretchRect
);
HGRect
vSliderStretchRect
=
{
0
,
4
,
16
,
196
};
QImage
vScrollSliderNormalImage
(
"D:
\\
ImageSrc
\\
vScrollSlider_Normal.png"
);
QImage
vScrollSliderHotImage
(
"D:
\\
ImageSrc
\\
hvScrollSlider_Hot.png"
);
QImage
vScrollSliderPushImage
(
"D:
\\
ImageSrc
\\
vScrollSlider_Push.png"
);
m_thumb
->
setVScrollSliderImage
(
&
vScrollSliderNormalImage
,
&
vSliderStretchRect
,
&
vScrollSliderHotImage
,
&
vSliderStretchRect
,
&
vScrollSliderPushImage
,
&
vSliderStretchRect
);
m_view
->
setVScrollSliderImage
(
&
vScrollSliderNormalImage
,
&
vSliderStretchRect
,
&
vScrollSliderHotImage
,
&
vSliderStretchRect
,
&
vScrollSliderPushImage
,
&
vSliderStretchRect
);
QImage
hScrollSliderImage
(
"D:
\\
ImageSrc
\\
hScrollSlider.png"
);
HGRect
hStretchRect
=
{
20
,
0
,
60
,
20
};
//m_thumb->setHScrollSliderImage(&hScrollSliderImage, &hStretchRect, &hScrollSliderImage, &hStretchRect, &hScrollSliderImage, &hStretchRect);
#ifdef HG_CMP_MSC
QImage
vScrollSliderImage
(
"D:
\\
ImageSrc
\\
vScrollSlider.png"
);
HGRect
vStretchRect
=
{
0
,
20
,
20
,
60
};
//m_thumb->setVScrollSliderImage(&vScrollSliderImage, &vStretchRect, &vScrollSliderImage, &vStretchRect, &vScrollSliderImage, &vStretchRect);
HGImage
img
=
NULL
;
HGImgFmt_LoadImage
(
"D:
\\
1.jpg"
,
0
,
NULL
,
HGBASE_IMGTYPE_RGB
,
HGBASE_IMGORIGIN_TOP
,
&
img
);
m_view
->
addImage
(
img
);
HGBase_DestroyImage
(
img
);
#ifdef HG_CMP_MSC
for
(
int
i
=
0
;
i
<
10000
;
++
i
)
for
(
int
i
=
0
;
i
<
10
;
++
i
)
{
char
fileName
[
256
];
sprintf
(
fileName
,
"D:
\\
Pictures
\\
%d.jpg"
,
i
);
m_thumb
->
addItem
(
fileName
);
}
#endif
}
...
...
@@ -152,7 +187,7 @@ void MainWindow::on_act_fullscreen_triggered()
void
MainWindow
::
on_currItemChanged
(
int
index
)
{
Q_UNUSED
(
index
);
}
void
MainWindow
::
on_itemDoubleClicked
(
int
index
)
...
...
ui/HGImgThumb.cpp
View file @
1cc1a793
...
...
@@ -3035,6 +3035,10 @@ void HGImgThumb::mouseDoubleClickEvent(QMouseEvent *e)
if
(
m_curItemIndex
==
index
&&
m_frontItems
[
index
]
->
selected
)
emit
itemDoubleClicked
(
index
);
}
else
{
QWidget
::
mouseDoubleClickEvent
(
e
);
}
}
void
HGImgThumb
::
on_updateItem
()
...
...
ui/HGImgView.cpp
View file @
1cc1a793
...
...
@@ -812,9 +812,9 @@ HGResult HGImgView::addImage(HGImage image)
GetMinShowImageRect
(
&
rcWnd
,
info
.
width
,
info
.
height
,
m_showImage
,
m_showRect
);
double
scale
=
(
double
)(
m_showRect
.
right
-
m_showRect
.
left
)
/
(
double
)
info
.
width
;
emit
scaleChanged
(
scale
);
updateMoveStatusAndCursor
(
);
Show
();
updateCursor
(
);
emit
scaleChanged
(
scale
);
return
HGBASE_ERR_OK
;
}
...
...
@@ -834,9 +834,9 @@ HGResult HGImgView::clearImage()
memset
(
&
m_showRect
,
0
,
sizeof
(
HGRectF
));
double
scale
=
0.0
;
emit
scaleChanged
(
scale
);
updateMoveStatusAndCursor
(
);
Show
();
updateCursor
(
);
emit
scaleChanged
(
scale
);
return
HGBASE_ERR_OK
;
}
...
...
@@ -881,9 +881,9 @@ HGResult HGImgView::rotateLeft()
GetMinShowImageRect
(
&
rcWnd
,
info
.
width
,
info
.
height
,
m_showImage
,
m_showRect
);
double
scale
=
(
double
)(
m_showRect
.
right
-
m_showRect
.
left
)
/
(
double
)
info
.
width
;
emit
scaleChanged
(
scale
);
updateMoveStatusAndCursor
(
);
Show
();
updateCursor
(
);
emit
scaleChanged
(
scale
);
return
HGBASE_ERR_OK
;
}
...
...
@@ -917,9 +917,9 @@ HGResult HGImgView::rotateRight()
GetMinShowImageRect
(
&
rcWnd
,
info
.
width
,
info
.
height
,
m_showImage
,
m_showRect
);
double
scale
=
(
double
)(
m_showRect
.
right
-
m_showRect
.
left
)
/
(
double
)
info
.
width
;
emit
scaleChanged
(
scale
);
updateMoveStatusAndCursor
(
);
Show
();
updateCursor
(
);
emit
scaleChanged
(
scale
);
return
HGBASE_ERR_OK
;
}
...
...
@@ -990,9 +990,9 @@ HGResult HGImgView::zoomIn(const HGPoint *pCenter)
recalcShowRect
(
this
->
width
(),
this
->
height
(),
m_scrollSize
,
m_hScroll
,
m_vScroll
,
m_showImage
,
m_showRect
);
double
scale
=
(
double
)(
m_showRect
.
right
-
m_showRect
.
left
)
/
(
double
)
info
.
width
;
emit
scaleChanged
(
scale
);
updateMoveStatusAndCursor
(
);
Show
();
updateCursor
(
);
emit
scaleChanged
(
scale
);
}
return
HGBASE_ERR_OK
;
...
...
@@ -1056,9 +1056,9 @@ HGResult HGImgView::zoomOut(const HGPoint *pCenter)
recalcShowRect
(
this
->
width
(),
this
->
height
(),
m_scrollSize
,
m_hScroll
,
m_vScroll
,
m_showImage
,
m_showRect
);
double
scale
=
(
double
)(
m_showRect
.
right
-
m_showRect
.
left
)
/
(
double
)
info
.
width
;
emit
scaleChanged
(
scale
);
updateMoveStatusAndCursor
(
);
Show
();
updateCursor
(
);
emit
scaleChanged
(
scale
);
}
return
HGBASE_ERR_OK
;
...
...
@@ -1099,9 +1099,9 @@ HGResult HGImgView::realSize()
recalcShowRect
(
this
->
width
(),
this
->
height
(),
m_scrollSize
,
m_hScroll
,
m_vScroll
,
m_showImage
,
m_showRect
);
double
scale
=
1.0
;
emit
scaleChanged
(
scale
);
updateMoveStatusAndCursor
(
);
Show
();
updateCursor
(
);
emit
scaleChanged
(
scale
);
return
HGBASE_ERR_OK
;
}
...
...
@@ -1121,9 +1121,9 @@ HGResult HGImgView::fitWndSize()
GetMinShowImageRect
(
&
rcWnd
,
info
.
width
,
info
.
height
,
m_showImage
,
m_showRect
);
double
scale
=
(
double
)(
m_showRect
.
right
-
m_showRect
.
left
)
/
(
double
)
info
.
width
;
emit
scaleChanged
(
scale
);
updateMoveStatusAndCursor
(
);
Show
();
updateCursor
(
);
emit
scaleChanged
(
scale
);
return
HGBASE_ERR_OK
;
}
...
...
@@ -1178,9 +1178,9 @@ HGResult HGImgView::fitWndWidth()
recalcShowRect
(
this
->
width
(),
this
->
height
(),
m_scrollSize
,
m_hScroll
,
m_vScroll
,
m_showImage
,
m_showRect
);
double
scale
=
(
double
)(
m_showRect
.
right
-
m_showRect
.
left
)
/
(
double
)
info
.
width
;
emit
scaleChanged
(
scale
);
updateMoveStatusAndCursor
(
);
Show
();
updateCursor
(
);
emit
scaleChanged
(
scale
);
return
HGBASE_ERR_OK
;
}
...
...
@@ -1228,7 +1228,7 @@ HGResult HGImgView::showColorInfo(bool show)
m_showColorInfo
=
show
;
QToolTip
::
hideText
();
updateCursor
();
update
MoveStatusAnd
Cursor
();
return
HGBASE_ERR_OK
;
}
...
...
@@ -1246,8 +1246,8 @@ void HGImgView::mousePressEvent(QMouseEvent* e)
m_mousePressStatus
=
mouseStatus
;
m_mousePressBeginX
=
e
->
pos
().
x
();
m_mousePressBeginY
=
e
->
pos
().
y
();
updateMoveStatusAndCursor
();
Show
();
updateCursor
();
return
;
}
...
...
@@ -1260,7 +1260,7 @@ void HGImgView::mousePressEvent(QMouseEvent* e)
m_operate
=
1
;
m_beginX
=
e
->
pos
().
x
();
m_beginY
=
e
->
pos
().
y
();
updateCursor
();
update
MoveStatusAnd
Cursor
();
}
void
HGImgView
::
mouseMoveEvent
(
QMouseEvent
*
e
)
...
...
@@ -1400,7 +1400,8 @@ void HGImgView::mouseMoveEvent(QMouseEvent* e)
QToolTip
::
hideText
();
}
updateCursor
();
updateMoveStatusAndCursor
();
Show
();
}
}
...
...
@@ -1450,8 +1451,8 @@ void HGImgView::mouseReleaseEvent(QMouseEvent* e)
recalcShowRect
(
this
->
width
(),
this
->
height
(),
m_scrollSize
,
m_hScroll
,
m_vScroll
,
m_showImage
,
m_showRect
);
}
updateMoveStatusAndCursor
();
Show
();
updateCursor
();
}
void
HGImgView
::
enterEvent
(
QEvent
*
e
)
...
...
@@ -1462,6 +1463,9 @@ void HGImgView::enterEvent(QEvent *e)
void
HGImgView
::
leaveEvent
(
QEvent
*
e
)
{
Q_UNUSED
(
e
);
m_mouseMoveStatus
=
MouseStatus_Null
;
Show
();
}
void
HGImgView
::
paintEvent
(
QPaintEvent
*
e
)
...
...
@@ -1743,8 +1747,8 @@ void HGImgView::resizeEvent(QResizeEvent* e)
emit
scaleChanged
(
scale
);
}
updateMoveStatusAndCursor
();
Show
();
updateCursor
();
}
void
HGImgView
::
keyPressEvent
(
QKeyEvent
*
e
)
...
...
@@ -1814,9 +1818,9 @@ void HGImgView::dropEvent(QDropEvent *e)
GetMinShowImageRect
(
&
rcWnd
,
info
.
width
,
info
.
height
,
m_showImage
,
m_showRect
);
double
scale
=
(
double
)(
m_showRect
.
right
-
m_showRect
.
left
)
/
(
double
)
info
.
width
;
emit
scaleChanged
(
scale
);
updateMoveStatusAndCursor
(
);
Show
();
updateCursor
(
);
emit
scaleChanged
(
scale
);
}
}
...
...
@@ -2044,8 +2048,10 @@ void HGImgView::reset()
m_beginY
=
-
1
;
}
void
HGImgView
::
updateCursor
()
void
HGImgView
::
update
MoveStatusAnd
Cursor
()
{
m_mouseMoveStatus
=
getMouseStatus
(
mapFromGlobal
(
QCursor
::
pos
()));
if
(
0
!=
m_operate
)
{
setCursor
(
Qt
::
ClosedHandCursor
);
...
...
@@ -2056,9 +2062,10 @@ void HGImgView::updateCursor()
}
else
{
MouseStatus
mouseStatus
=
getMouseStatus
(
mapFromGlobal
(
QCursor
::
pos
()
));
QRect
rcWnd
(
0
,
0
,
this
->
width
(),
this
->
height
(
));
if
(
NULL
==
m_image
||
!
m_showImage
||
!
m_showColorInfo
||
MouseStatus_Null
!=
mouseStatus
)
||
!
m_showColorInfo
||
MouseStatus_Null
!=
m_mouseMoveStatus
||
!
rcWnd
.
contains
(
mapFromGlobal
(
QCursor
::
pos
())))
{
setCursor
(
Qt
::
ArrowCursor
);
}
...
...
ui/HGImgView.hpp
View file @
1cc1a793
...
...
@@ -86,7 +86,7 @@ private:
static
void
DrawImage
(
QPainter
&
painter
,
const
QRect
&
destRect
,
const
QImage
*
image
,
const
QRect
&
stretchRect
);
void
reset
();
void
updateCursor
();
void
update
MoveStatusAnd
Cursor
();
MouseStatus
getMouseStatus
(
const
QPoint
&
pt
);
QRect
getHScrollLeftPos
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment