Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
mahuifa
QMDemo
提交
c2682857
Q
QMDemo
项目概览
mahuifa
/
QMDemo
通知
1
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Q
QMDemo
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
c2682857
编写于
8月 25, 2022
作者:
mahuifa
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
新功能:完成TransformDemo
上级
5a468583
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
45 addition
and
12 deletion
+45
-12
PaintingDemo/TransformDemo/renderarea.cpp
PaintingDemo/TransformDemo/renderarea.cpp
+1
-1
PaintingDemo/TransformDemo/widget.cpp
PaintingDemo/TransformDemo/widget.cpp
+20
-8
PaintingDemo/TransformDemo/widget.h
PaintingDemo/TransformDemo/widget.h
+2
-0
PaintingDemo/TransformDemo/widget.ui
PaintingDemo/TransformDemo/widget.ui
+22
-3
未找到文件。
PaintingDemo/TransformDemo/renderarea.cpp
浏览文件 @
c2682857
...
...
@@ -62,7 +62,7 @@ void RenderArea::paintEvent(QPaintEvent *event)
painter
.
setTransform
(
m_transform
);
// 设置QTransform
// 画一个矩形
QRect
rect
(
200
,
100
,
200
,
200
);
QRect
rect
(
-
100
,
-
100
,
200
,
200
);
painter
.
drawRect
(
rect
);
painter
.
setFont
(
QFont
(
"黑体"
,
25
,
QFont
::
Bold
));
...
...
PaintingDemo/TransformDemo/widget.cpp
浏览文件 @
c2682857
...
...
@@ -8,9 +8,7 @@ Widget::Widget(QWidget *parent)
{
ui
->
setupUi
(
this
);
// m_transform.translate(50, 50);
// m_transform.rotate(10);
// m_transform.scale(0.5, 1);
this
->
setWindowTitle
(
"QTransform偏移原点、旋转、缩放功能Demo"
);
ui
->
renderArea
->
installEventFilter
(
this
);
}
...
...
@@ -30,7 +28,7 @@ bool Widget::eventFilter(QObject *watched, QEvent *event)
{
if
(
watched
==
ui
->
renderArea
&&
event
->
type
()
==
QEvent
::
Resize
)
{
reset
();
on_but_reset_clicked
();
}
return
QWidget
::
eventFilter
(
watched
,
event
);
...
...
@@ -63,8 +61,8 @@ void Widget::on_but_original_clicked()
*/
void
Widget
::
on_but_reset_clicked
()
{
m_transform
.
reset
();
reset
();
m_transform
.
reset
();
ui
->
renderArea
->
setTransform
(
m_transform
);
}
...
...
@@ -107,16 +105,30 @@ void Widget::on_verticalSlider_origin_valueChanged(int value)
}
/**
* @brief 设置旋转功能
* @brief 设置旋转功能
,虽然说支持XAxis、YAxis,但似乎有bug,旋转后就无法还原
* @param value
*/
void
Widget
::
on_dial_valueChanged
(
int
value
)
{
static
int
pastValue
=
0
;
pastValue
=
m_transform
.
isIdentity
()
?
0
:
pastValue
;
m_transform
.
rotate
(
-
pastValue
);
// 由于QTransform中rotate是累计的,所以在设置之前这里进行重置
m_transform
.
rotate
(
-
pastValue
,
Qt
::
ZAxis
);
// 由于QTransform中rotate是累计的,所以在设置之前这里进行重置
pastValue
=
((
value
+
90
)
%
360
);
m_transform
.
rotate
(
pastValue
);
// 由于QDial默认0为竖直向下方向,QPainter默认0度为向右,所以需要+90度
m_transform
.
rotate
(
pastValue
,
Qt
::
ZAxis
);
// 由于QDial默认0为竖直向下方向,QPainter默认0度为向右,所以需要+90度
ui
->
renderArea
->
setTransform
(
m_transform
);
}
/**
* @brief 缩放
* @param value
*/
void
Widget
::
on_horizontalSlider_scale_valueChanged
(
int
value
)
{
static
int
pastValue
=
50
;
qreal
s
=
value
>
pastValue
?
1.1
:
0.9
;
pastValue
=
value
;
m_transform
.
scale
(
s
,
s
);
ui
->
renderArea
->
setTransform
(
m_transform
);
}
PaintingDemo/TransformDemo/widget.h
浏览文件 @
c2682857
...
...
@@ -35,6 +35,8 @@ private slots:
void
on_dial_valueChanged
(
int
value
);
void
on_horizontalSlider_scale_valueChanged
(
int
value
);
private:
Ui
::
Widget
*
ui
;
...
...
PaintingDemo/TransformDemo/widget.ui
浏览文件 @
c2682857
...
...
@@ -24,6 +24,9 @@
</property>
</widget>
</item>
<item
row=
"1"
column=
"1"
>
<widget
class=
"RenderArea"
name=
"renderArea"
native=
"true"
/>
</item>
<item
row=
"1"
column=
"0"
>
<widget
class=
"QSlider"
name=
"verticalSlider_origin"
>
<property
name=
"orientation"
>
...
...
@@ -34,9 +37,6 @@
</property>
</widget>
</item>
<item
row=
"1"
column=
"1"
>
<widget
class=
"RenderArea"
name=
"renderArea"
native=
"true"
/>
</item>
<item
row=
"0"
column=
"2"
rowspan=
"2"
>
<layout
class=
"QVBoxLayout"
name=
"verticalLayout"
>
<item>
...
...
@@ -90,6 +90,25 @@
</item>
</layout>
</item>
<item
row=
"2"
column=
"1"
>
<widget
class=
"QSlider"
name=
"horizontalSlider_scale"
>
<property
name=
"pageStep"
>
<number>
10
</number>
</property>
<property
name=
"value"
>
<number>
50
</number>
</property>
<property
name=
"orientation"
>
<enum>
Qt::Horizontal
</enum>
</property>
<property
name=
"tickPosition"
>
<enum>
QSlider::TicksBothSides
</enum>
</property>
<property
name=
"tickInterval"
>
<number>
0
</number>
</property>
</widget>
</item>
</layout>
</widget>
<customwidgets>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录