
C语言也能做网页式界面?,开发桌面软件竟像写网页,这库到底靠不靠谱
最近在折腾一个自己用的小工具,想加个界面。本来打算直接用命令行凑合,但实在不好用。就顺手搜了下现在C语言有没有好点的图形界面方案。之前学过点前端,看到一个叫LCUI的东西,说是能用XML和CSS写C的界面,感觉有点离谱,但还是下了来看看。
试了一把,发现还真能行。它让你用XML去搭界面结构,跟写HTML差不多。比如按钮、文本框这些,都是标签。然后再用CSS来改颜色、大小、位置,不用一行行去调API画坐标。以前写Win32程序,光是搞个窗口居中都能整半天,现在直接margin:auto就行。
编译也正常,纯C写的,拿GCC或者MSVC都能过。我是在Windows上测的,开了个简单的带按钮的窗口,跑起来挺稳。后来又在公司那台Ubuntu虚拟机上试了,换一下编译参数也能跑。说是还支持Wayland,不过我没环境就没深测。
它有个命令行工具叫lcui-cli,可以快速建项目。输一行命令,自动生成目录和基本文件。虽然看着简单,但对我这种不想折腾配置的人来说挺省事。项目结构也很清楚,资源、代码、样式分开放,不会乱成一团。

让我意外的是,它居然支持dp和sp这种单位。高分屏缩放的时候,字体和控件能跟着变,不会糊也不会太小。以前看C写的程序,很多在2K屏上字小得要用放大镜,这倒好,直接适配了。我拿同事的Mac试了别人打包的demo,界面也没崩,就是个别地方对不齐,可能macOS支持还没补全。
和别的库比,LCUI明显轻。不像GTK+那样带一堆依赖,也不像Qt那样动不动几十MB安装包。我编出来一个空窗口程序,加上运行库才几MB,嵌进我的小工具里没压力。而且我不用碰C++,代码风格统一,维护起来方便。
它还有个叫lcui-router的项目,处理多页面跳转。我想做个设置页和主界面切换,用这个就不用自己去控制显示隐藏了。配合lc-design组件库,直接拿现成的按钮、输入框样式,米兰体育省了不少写CSS的时间。虽然组件不多,但日常够用。
图片管理器LC-Finder是他们官网推的例子。我下来看了下代码,功能还挺全,能预览、分文件夹、批量操作。最关键是全用LCUI写的,说明真能搞复杂应用。代码也不算太乱,能看出怎么组织大项目。
{jz:field.toptypename/}
不过还是有短板。第三方插件基本没有,想加个图表或者富文本编辑器,得自己啃。文档也有点零散,有些函数怎么用得去看源码。社区人不多,提问有时几天才回。有次我遇到字体加载失败,最后翻到是路径写法问题,但官方没写清楚。
另外,虽然支持UWP,但我没成功打包成微软商店那种应用。查了issue区好多人卡这,可能还得等更新。Linux上X11没问题,Wayland下偶尔会闪退,估计是底层兼容还要磨合。
我试着做了个带配置界面的小工具,用来改串口参数。以前全靠改配置文件,现在点几下就能设波特率、数据位。同事用着说比之前顺手多了。关键是我没花太多额外时间,大部分界面都是复制粘贴改改CSS搞定的。
它还有一个叫Trad的语言实验项目,语法像JavaScript,能编译成C再接LCUI。写着像React,函数式组件那种。我玩了一下,确实能跑,但属于外挂,稳定性不敢说。正经开发还是建议老老实实用C。

总的来说,这个库不是万能药。你要做大而全的企业软件,建议还是用Qt。但如果你是写个小工具、嵌入系统、或者给旧项目加界面,LCUI挺好用。特别是你会点前端,上手更快。不用学一整套C++机制,也不用被GTK+的信号槽绕晕。
它把写界面这件事变得简单了。不再是画像素、算坐标,而是搭积木、调样式。虽然还年轻,组件少,生态弱,但至少路子是对的。很多人说C语言不适合做现代界面,现在看也不一定。
编译稳定,运行不卡,打包体积小,跨平台基本能通。我在三个不同系统上都跑了同一个程序,除了细微样式差异,功能完全一样。这是我之前不敢想的事。
用了两周,没再换回来。毕竟,谁愿意回去手动算按钮位置呢。










