ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

XUI:不被定义,无限可能——带可视化设计器的跨平台C++界面开发框架

XUI:不被定义,无限可能——带可视化设计器的跨平台C++界面开发框架 1. 为什么做 XUI我做客户端开发有十来年了做界面是工作里躲不开的一部分。就算项目是 B/S也不可能所有界面都交给前端小弹窗再去联调很费时间安装卸载这种程序纯 C 界面往往更合适。流行的开源界面库大多要手写 XML。架构各不一样又不是真的所见即所得。用了多年手写和来回预览还是慢赶进度就得加班。MFC 那种拖拽其实挺好能看见结果。缺点是控件属性太弱改个背景色都要自绘复杂界面像一座山好看的界面做得慢后面也不好维护。工业软件如果对界面没要求可能感觉不到一旦要皮肤、圆角、换肤就很不友好。这也是很多人慢慢不用 MFC 做界面的原因。所以我想做一套带设计器的界面库拖拽、改外观就能把界面做出来再像 MFC 一样自动生成窗体类、控件变量和消息映射把时间留给业务。它以前叫 DUIThink现在叫 XUI。2. XUI 是什么XUI 是带可视化设计器的跨平台界面开发框架。它可以像 MFC 一样自动生成窗体类、控件变量和消息映射并带上线程池、文件、网络、监听等常用开发部件用来直接做应用。运行时库开源许可证是 LGPL-2.1设计器单独提供。控件没有自己的窗口句柄整棵界面挂在一个窗口上绘制。Windows 走 Win32不需要 SDL。Linux、macOS、Android 走 SDL3。四个平台都能看 Demo、下包。3. 自绘 Edit做客户端几乎都会碰到输入框。我早期用别的界面库时Edit 多半是包了一层系统控件问题很具体透明、异形窗口上不好用子窗口和父窗口抢焦点从显示切到编辑文字会跳一下文字不能垂直居中也不好做富文本和字体阴影插很多 Gif 会卡绑在系统控件上跨不了平台后来做成了自绘 Edit。文本、图片、动图和透明通道都在控件自己的绘制里完成聊天输入和普通文本编辑直接调控件接口不用再绕系统 API、系统消息或 COM。它现在是 XUI 的一部分。4. 设计器和菜单设计器负责把界面做成看得见、改得动的结果。绑定 Visual Studio 的解决方案之后可以像 MFC 一样生成窗体类、控件变量和控件事件代码。拖放、对齐、改属性都会立刻反映到界面上。图片、字体、颜色放在一起看。控件树里用 Shift Up / Down 调 Z 序也能把一块界面复制到另一个视图。有 MFC 经验的话会更好上手。菜单同样是可视化的可以按一级、二级、三级往下编。我之前用几分钟模拟过迅雷看看那种圆角、带图标的多级菜单视频在这里https://www.bilibili.com/video/BV1fUG9zaEj6/更多操作可以看 B 站空间里的教程https://space.bilibili.com/3224584885. 库里有什么布局和绘制靠上、靠下、靠左、靠右、居中、相对、绝对固定宽高、最大最小宽高、按文本或子控件自动调整背景颜色、图片、圆角、渐变以及自定义 BitmapSVG覆盖比常见看图工具和部分开源库更全的格式RichText同一段文字分字体、分颜色支持多行靠左、靠右、靠上、靠下、居中DPI 切换一行代码设计器里可以预览各 DPI窗体特效、控件水波纹一行代码换肤控件Clone 复制出相同控件Attach / Detach 随意挂到父节点自绘 Edit可插入图片、动图和带透明通道的文字自绘 IP、日历、Clock、3D 旋转菜单ComboBox 支持梯度子项滑动类似以前 QQ 登录选账号的效果Animate 支持 Gif 和序列帧ListView 改一个属性即可在 List、Grid、TileH、TileV 之间切换子项可以拖动换位树控件带选中按钮、无选中按钮、表头树、单选树改属性即可切换这些之外还有线程池、文件、网络、文件监听、注册表监听、拖拽、命令行、磁吸、内存池和字符串。与其只把它当成界面库不如当成一套能直接做应用的框架。6. 怎么开始源码在https://github.com/miaomiaoyule/XUIhttps://gitee.com/miaomiaokeji/XUI.git先跑Demo/XUIDemo_C。Windows 用 Visual Studio 打开XUI.2017.sln配置选 Release_Unicode | Win32先编库再编 Demo。DuiPlatformSDL保持默认关闭这一端不需要 SDL。Linux、macOS、Android 用 CMake 打开XUI_PLATFORM_SDL需要 SDL3。各平台的 Demo 视频和安装包在官网。官网http://49.235.209.245/XUI视频教程https://space.bilibili.com/322458488官网有视频跟着做一遍就能上手。后面有时间我也会继续更教程。使用上的问题欢迎进群一起交流。
返回列表