美文网首页
[QT]resize窗口的自适应

[QT]resize窗口的自适应

作者: peterzen | 来源:发表于2018-11-12 18:38 被阅读22次

    目标

    设计一个QT窗口程序,上面是两个Image显示窗口,左右布局,下面是一个chart显示窗口,要求:

    1. 在resize窗口时,上面两个image窗口会自动适配(左右等分);
    2. 下面的chart显示区域高度固定,宽度自适应;
    3. 可以通过菜单进行chart区域的隐藏;
    4. 在一种模式下,两个image区域需要设置为1:2;
      初始的layout如下:


      resize.jpg

    基础Layout

    为了实现上面两个ImageView左右排列,下面一个ChartView的效果,需要

    1. 整体布局采用Vertical Layout;
    2. Vertical Layout中先放一个Horizontal Layout,下面放ChartView;
    3. Horizontal Layout中分别摆放两个ImageView;
      在这样的基础上,在窗口resize的过程中,已经可以实现自动适应,不过上面ImageView和下面的ChartView是一起变化的(窗口上下等分)


      layout.jpg

    固定ChartView的高度

    需要利用sizePolicy和MaximumSize来实现

    1. 设置ChartView的sizePolicy -> 垂直策略Maximum;
    2. 设置ChartView的MaximumSize中的高度为期望的值;

    在UI design的时候可以布局ChartView

    ChartView不属于标准的UI组件,在UI Layout的时候是找不到这个控件的,为了在可视化UI layout的时候可以使用ChartView需要使用
    先使用标准化UI控件(QWidget)占位 -> 再提升为自定义类型的方式来实现
    具体步骤:

    1. 先在UI上layout一个QWidget;
    2. 设置好sizePolicy和MaximumSize;
    3. 在控件上右键菜单选择提升为...菜单项;
      change.jpg
    4. 在弹出窗口中将QWidget提升为QChartView,对应的头文件设置为QChartView使用时需要包含的内容QtCharts;然后通过添加按钮进行设置
      changetype.jpg

    这样操作以后,就可以在UI layout时使用QChartView控件了
    参考:
    Using Custom Widgets with Qt Designer

    设置左右ImageView窗口为1:2

    通过sizePolicy水平伸展项进行设置:

    1. 左边的ImageView的水平伸展设置为1;
    2. 右边的ImageView的水平伸展设置为2;

    至此,我们的目标已经达成。

    相关文章

      网友评论

          本文标题:[QT]resize窗口的自适应

          本文链接:https://www.haomeiwen.com/subject/demcfqtx.html