目标
设计一个QT窗口程序,上面是两个Image显示窗口,左右布局,下面是一个chart显示窗口,要求:
- 在resize窗口时,上面两个image窗口会自动适配(左右等分);
- 下面的chart显示区域高度固定,宽度自适应;
- 可以通过菜单进行chart区域的隐藏;
-
在一种模式下,两个image区域需要设置为1:2;
初始的layout如下:
resize.jpg
基础Layout
为了实现上面两个ImageView左右排列,下面一个ChartView的效果,需要
- 整体布局采用Vertical Layout;
- Vertical Layout中先放一个Horizontal Layout,下面放ChartView;
-
Horizontal Layout中分别摆放两个ImageView;
在这样的基础上,在窗口resize的过程中,已经可以实现自动适应,不过上面ImageView和下面的ChartView是一起变化的(窗口上下等分)
layout.jpg
固定ChartView的高度
需要利用sizePolicy和MaximumSize来实现
- 设置ChartView的
sizePolicy
->垂直策略
为Maximum
; - 设置ChartView的
MaximumSize
中的高度为期望的值;
在UI design的时候可以布局ChartView
ChartView不属于标准的UI组件,在UI Layout的时候是找不到这个控件的,为了在可视化UI layout的时候可以使用ChartView需要使用
先使用标准化UI控件(QWidget)占位
-> 再提升为自定义类型
的方式来实现
具体步骤:
- 先在UI上layout一个
QWidget
; - 设置好sizePolicy和MaximumSize;
- 在控件上右键菜单选择
提升为...
菜单项;
change.jpg - 在弹出窗口中将
QWidget
提升为QChartView
,对应的头文件设置为QChartView使用时需要包含的内容QtCharts
;然后通过添加
按钮进行设置
changetype.jpg
这样操作以后,就可以在UI layout时使用QChartView控件了
参考:
Using Custom Widgets with Qt Designer
设置左右ImageView窗口为1:2
通过sizePolicy
的水平伸展
项进行设置:
- 左边的ImageView的
水平伸展
设置为1
; - 右边的ImageView的
水平伸展
设置为2
;
至此,我们的目标已经达成。
网友评论