当前位置: 首页 > news >正文

Qt Designer,仿作一个ui界面的练习(一):界面的基本布局

初学不要太复杂,先做一个结构简单的,大致规划一下功能分区,绘制草图:

 最终的效果:

        

        界面主要由顶边栏、侧边栏、内容区构成。顶边栏左边是logo,右边是时钟显示。侧边栏最上边是切换按钮,用以动画切换功能按钮的缩略显示和全部显示。

一、创建QMainWindow,命名为demo.ui:

二、移除菜单栏和状态栏

三、 将自带的QWidget命名为baseWidget:

        这是所有的部件的基底界面。

四、 在baseWidget上放置一个QFrame,命名为appFrame,这个QFrame就是软件的显示主界面。

五、再放置四个QFrame,分别命名为leftFrame(左边栏)、topFrame(顶边栏)、mainContent(显示内容主区)、contentBox(内容区)。内容区由左边栏和显示内容主区组成,是软件的主要操作和显示区。

六、逐一设计布局和部件结构,从顶边栏开始:

        1、在topFrame(顶边栏)放置三个QFrame,从左至右分别命名为:topLogo、topContent、topTimeShow。

        2、顶边栏的属性设置,将最大和最小高度全部设置为50:

 3、topLogo的属性:最大和最小宽高均设尺寸为30*30

        4、topContent的属性:最大和最小高度全部设置为50:

         5、topTimeShow的属性:最大和最小宽高尺寸全部设置为200*50:

        6、右键点击topFrame(顶边栏),布局--水平布局。并在属性中将边距全部设为0 。

        7、右键点击topLogo,布局对齐--左侧。

        8、同样的方法, 设置topTimeShow布局对齐--右侧。

七、leftFrame(左边栏)的布局:

        1、leftFrame(左边栏)放置三个QFrame,从上到下分别命名为:left_toggleBox、left_buttonsBox、left_bottomBox。

        2、leftFrame(左边栏)的属性设置,将最小宽度设置为50。

        3、left_buttonsBox的属性设置,将最小宽度设置为50。

        4、left_toggleBox、left_bottomBox的属性设置,最小宽度设置为50,最小和最大高度均设为50。

        5、右键点击leftFrame(左边栏),布局--垂直布局。并在属性中将边距全部设为0 。

        6、右键点击left_buttonsBox,布局对齐--顶部。注意,顶部的不是left_toggleBox,虽然它在最上边。将位于中间的left_buttonsBox设为顶部,它就不会自动居中,而是随着尺寸的增长从上向下延伸。

        7、右键点击left_bottomBox,布局对齐--底部。

八、contentBox(内容区)的布局

        1、将leftFrame(左边栏)和mainContent(显示内容主区)拖入contentBox(内容区)。

        2、右键点击contentBox(内容区),布局--水平布局。并在属性中将边距全部设为0 。

        3、 右键点击leftFrame,布局对齐--左侧。

        4、在mainContent(显示内容主区)属性设置里将其水平策略设置为expanding。

九、appFrame(显示主界面)的布局

        1、将topFrame和contentBox拖入appFrame(显示主界面):

         2、右键点击appFrame(显示主界面),布局--垂直布局。并在属性中stretch设为0,其余保持默认 。

        3、 右键点击topFrame,布局对齐--顶部。

        4、在contentBox(内容区)属性设置里将其垂直策略设置为expanding。

十、整体的布局:

        右键点击MainWindow,布局--垂直布局。

        

         至此,完成了布局的基本框架设计,软件的显示主界面(appFrame)已经自动布满了QMainWindow,而且,当拖动改变QMainWindow的尺寸时,appFrame,也就是软件的显示主界面也随之改变。这就是使用布局的好处,它会自动调整相对的尺寸,使软件界面能够适应不同的屏幕分辨率。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Unity四元数线性插值Lerp
  • C++篇:入门(2)
  • 重磅更新||Pyside6|Pyqt实现处理GUI界面获取的数据时进度条同步更新
  • 第一个 Flask 项目
  • 第十二节、人物下蹲
  • 生产力工具|vscode for mac安装及过程留存
  • 探索哈希表:C++中的实现与操作详解【Map、Set、数据结构】
  • 【Python学习手册(第四版)】学习笔记13.1-while、for循环
  • C++的STL简介(一)
  • R语言统计分析——描述性统计
  • YUM软件包管理工具:更改YUM源、配置本地YUM仓库
  • 前端学习AI历程
  • 计算机基础(Windows 10+Office 2016)教程 —— 第8章 多媒体技术及应用
  • Cursor搭配cmake实现C++程序的编译、运行和调试
  • ScriptEcho:AI赋能的前端代码生成神器
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • 11111111
  • Angular 2 DI - IoC DI - 1
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • gops —— Go 程序诊断分析工具
  • JS函数式编程 数组部分风格 ES6版
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Sass 快速入门教程
  • Terraform入门 - 1. 安装Terraform
  • 三分钟教你同步 Visual Studio Code 设置
  • Nginx实现动静分离
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • ​第20课 在Android Native开发中加入新的C++类
  • ​数据结构之初始二叉树(3)
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #Datawhale AI夏令营第4期#AIGC方向 文生图 Task2
  • #laravel部署安装报错loadFactoriesFrom是undefined method #
  • (9)STL算法之逆转旋转
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (Note)C++中的继承方式
  • (SpringBoot)第二章:Spring创建和使用
  • (第30天)二叉树阶段总结
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (函数)颠倒字符串顺序(C语言)
  • (精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)ABI是什么
  • (转)德国人的记事本
  • (转)用.Net的File控件上传文件的解决方案
  • ***详解账号泄露:全球约1亿用户已泄露
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .Net Core中的内存缓存实现——Redis及MemoryCache(2个可选)方案的实现
  • .net打印*三角形
  • .Net多线程Threading相关详解
  • .NET基础篇——反射的奥妙
  • .Net转Java自学之路—基础巩固篇十三(集合)