在Qt项目开发过程中,如何实现做出漂亮的界面呢?

一般来说,一个界面的完成是美工、开发者和用户共同完成的。美工完成UI设计,开发者完成实现,用户对UI提出修改意见。本文主要来探讨一下如何从UI设计到交付界面的实现过程。

从UI到界面实现,需要按照从整体到局部的方式来实现,整体主要是背景和布局,局部则是每个部分的具体实现。具体方法如下:

首先是整个UI的背景,如果是窗口,则需要根据UI设计,来判断窗口是否包含工具栏、菜单栏、标题栏,系统自带的工具栏和菜单栏是否满足需要,通常来说,系统自带的控件是比较丑的,一个漂亮的UI,单纯使用系统自带的工具栏和菜单栏无法满足要求,往往需要进行重新封装。对于窗口的背景,可以使用图片填充,也可以在paintevent函数中绘制。

其次是根据整个UI的设计,来设计界面的布局,QtCreater提供了丰富的布局,能够比较轻松的实现UI中的布局设计。常用的布局有:水平布局类QHBoxLayout、垂直布局类QVBoxLayout、网格布局类QGridLayout、表格布局类QFormLayout、分组布局类QStackLayout,QStackedLayout类把子控件进行分组或者分页,一次只显示一组或者一页,隐藏其他组或者页上的控件,这些布局是可以嵌套使用的。使用这些Qt布局管理类的一个很重要的原因是,在窗口尺寸变化时,布局管理器能够自动调整窗体里所有控件的大小和尺寸。

然后是根据布局划分来填充每个局部的内容。在此,我们姑且称每个局部布局为子模块。每个子模块基本都是使用控件来填充的,有的控件是可以使用Qtcreater提供的公共控件来完成,这些控件大部分都可以通过设置样式来达到UI中设计的效果,常用控件的样式设置方法从网上能够找到很多的例子,可以根据这些例子中的样式配置方法,结合自己的UI设计,来修改对应的参数,从而达到理想的效果。对于QtCreater没有提供的一些控件,可以使用一些开源的插件或者自己封装实现。对于控件的封装,个人建议是,如果能使用图片的,尽量使用图片,原因一是由于图片的效果比代码绘制更简单,也更容易替换和维护,当需要更换显示效果时,只需要替换图片即可,最大程度的减少对代码的修改,保护控件的封装性;二是由于图片的效果往往比代码绘制出来的更好一些,代码绘制复制样式时,实现的难度也比较大,使用图片的话对开发者来说更轻松一些,图片交由美工来完成,各司其职效果会更好。

最后,每一个漂亮的界面都是UI设计师和开发者共同努力的结果,感谢每一个在界面设计和实现工作中分享自己设计和实现经验的工作者。

mfc在调整界面时左边的控件会丢失_Qt项目中如何完成一个漂亮的界面相关推荐

  1. Qt在设计ui界面时,在控件中输入中文,会自动变成英文字母,解决方案

    操作系统 win10专业版64位 Qt版本 6.1.2 问题详情 在Qt Creator中,进入ui设计页面,添加一个label控件.用的微软的拼音输入法,输入中文时,刚想选择候选的文字,就直接变成了 ...

  2. Kotlin写界面时诸多控件的点击事件

    界面中控件较多的话,每个控件都设置setOnClickListener(this)是很麻烦的,为此抽出了一个Context的扩展类: fun Context.setViewClick(listener ...

  3. WPF布局控件AvalonDock介绍以及应用中遇到的一个问题

    在使用OpenExpressApp框架工作中,我们将开源的AvalonDock控件作为界面布局来应用. AvalonDock是在codeplex上的一个开源项目,专门用于WPF的界面布局,可以做成类似 ...

  4. 使用Telerik控件库制作WPF项目中的折线图、柱状图、饼图和甜甜圈图

    本博客是基于 .Net Framework 4.6.2 的WPF(MVVM)项目,Telerik版本为 2016.2.613.40.其他版本是否可用不详. 本文章所使用数据均为测试数据,无任何意义. ...

  5. 设计ui界面时,在控件中输入中文,会自动变成英文字母

    解决方法: 我看有的评论说把ClangCodeModel插件关闭重启QT就正常了,但是我尝试后发现还是不行!最后解决是:直接换个输入法,之前用的是微软自带的输入法,现在安装了讯飞输入法,问题成功解决, ...

  6. dev treeview控件_在Winform开发框架中使用DevExpress的TreeList和TreeListLookupEdit控件

    DevExpress提供的树形列表控件TreeList和树形下拉列表控件TreeListLookupEdit都是非常强大的一个控件,它和我们传统Winform的TreeView控件使用上有所不同,我一 ...

  7. C# .NET 6.0已经取消了Framework 4.8的WebBrowser控件,几款NuGet中的浏览器控件介绍

    即使在C# .NET 6.0..NET 7.0在选择工具箱项COM组件添加Microsoft Web Browser,工具箱也没有WebBrowser控件. WebBrowser控件: WebBrow ...

  8. VS2010/MFC编程入门之三十(常用控件:树形控件Tree Control 上)

    前面两节为大家讲了列表视图控件List Control,这一节开始介绍一种特殊的列表--树形控件Tree Control. 树形控件简介 树形控件在Windows系统中是很常见的,例如资源管理器左侧的 ...

  9. 分享-WinForm界面开发之布局控件WeifenLuo.WinFormsUI.Docking的使用

    分享自伍华聪的-WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用 本篇介绍Winform程序开发中的布局界面的设计,介绍如何在我的 ...

最新文章

  1. 算法基础知识科普:8大搜索算法之二叉搜索树(下)
  2. 监管AI?吴恩达跟马斯克想到一块去了
  3. 学术圈竞赛圈大讨论,深度学习真的比不过GBDT模型吗?
  4. 软件测试用python一般用来做什么-如何将Python应用到实际测试工作中?
  5. 关于rms,打开文档的时候提示您没有权限打开文档,因为您的权限已过期
  6. git 切换分支
  7. SpringBoot日志收集-Aop方式-存进数据库一起来和我看看咋收集日志吧!!
  8. JavaScript君,请您坦诚相待~~~
  9. C#如何生成缩略图、水印
  10. ARM(IMX6U)裸机按键输入实验(BSP+SDK、GPIO输入与输出、按键消抖)
  11. 刷脏页策略linux,linux – 生成大量脏页阻止同步写入
  12. myisam读取速度为什么比innodb快_为什么MySQL用B+树做索引
  13. Linux之export命令
  14. JavaScript通过变量设置对象键[重复]
  15. 《浪潮之巅》读书笔记——第9章 雅虎
  16. Vue:vue过滤器的使用、借助第三方库moment.js实现时间过滤器
  17. mp4安装Linux,linux centos mp4box 安装教程
  18. 原生JS实现图片爆炸特效
  19. Oracle 服务器 客户端 US7ASCII、 UTF8字符编码问题
  20. CVPR 2022 | 涨点显著!AMD提出:动态Sparse R-CNN

热门文章

  1. vue3vite工程里面引入assets目录下的图片文件(一种方法)
  2. python动态图表变化_Python数据可视化 pyecharts实现各种统计图表过程详解
  3. halcon边缘提取颜色相近_初学者福利!三种用Python从图像数据中提取特征的技术...
  4. linux与linux传文件乱码,关于Linux与windows传递文件乱码问题
  5. sap把系统内部直接写入到自建表_特斯拉放弃SAP后,仅四个月就开发了套ERP
  6. RandLA-Net: Efficient Semantic Segmentation of Large-Scale Point Clouds
  7. Matlab修改显示数值格式/精度/小数位数
  8. Java 1.1.7 String API (!!!)
  9. SpringMVC中的Controller默认单例
  10. Altium AD20将已有的原理图PCB导出为封装库