酷Q社区»社区 分享交流区 编程技术

使用C++ 编写界面[复制链接]

作者: 赵国庆|查看: 982|回复: 17
跳转到指定楼层
4-5 14:01

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 赵国庆 于 2020-4-5 16:39 编辑

开始
c++界面,就要从我的经历说起

指令阶段
当时我还是只会c语言的小菜鸟,对于界面来说想都不敢想,当时的插件设置都是用纯指令模式
也就是插件第一次开启时设置主人QQ,然后主人可以通过指令设置一些功能

缺点:操作复杂
优点:可远程修改配置

调用易语言界面阶段
当时并没有调用易语言dll,而是直接打开可执行程序(exe),自己不会易语言,界面设计都是由别人来写,一些地方自己会感觉设计的不合理

优点:图形化编程、开发简单
缺点:交互性差,杀毒软件容易误报,兼容性差


WindowsAPI阶段
由于想要自己独立开发一个界面,搜遍了整个酷Q论坛,只发现有人用windowsAPI写了一个简单的界面,由于操作复杂,当时c++也不是特别熟,就直接放弃了,而且现在也不会选择WindowsAPI,因为太复杂了
优点:我也不清楚
缺点:开发复杂

MFC阶段
放弃WindowsAPI之后发现了MFC,MFC简单的来说就是用C++封装了WindowsAPI,因为使用MFC,我又学习了大量的C++面向对象的知识
刚开始我在比较“老的”SDK中可以直接添加MFC界面,可是使用了新版的SDK就只能用动态调用dll方式实现界面了,这样就会多出一个dll文件,用户使用起来会很不方便(在安装插件,插件更新上面会容易出现错误),而且MFC是已经是一个比较古老的框架了
MFC具有图形化编程(拖拉控件),对于新手来说也是比较简单
优点:图形化编程
缺点:需要编译成dll、交互性差(不能直接调用酷Q的接口)、用户使用不方便
QT阶段
因为MFC已经比较古老了,我在开发新的插件的时候尝试使用了QT,因为QT是一套跨平台框架,使用QT也是为了方便以后学习linux编程
不过使用QT并无法编译成dll,只能使用可执行程序(exe),这样交互性更差了,而且运行在其他电脑需要附带很多dll(至少大概50MB左右),当时我的解决方法就是让插件第一次开启时自动解压界面和dll文件,导致插件文件(cpk)大概在25MB左右。
而且当时发现好多兼容性问题,如:在windows server 2008运行会有很多函数出现错误 有时候界面会直接崩溃、而且不能在docker运行
QT可以使用QSS进行美化,界面明显比MFC漂亮很多,而且也有图形化编程,还有很多很方便的接口(如文件,网络,数据库等)
优点:图形化编程、封装了方方面面的接口、易美化
缺点:只能生成exe,需附带dll文件,兼容性差、交互性差、用户使用非常不方便

nana库 阶段
因为发现QT依赖的dll体积太大,于是我就又开始研究c++ GUI开发,目前网上基本都是MFC和QT的开发教程,实在是找不到其他的其他的GUI库,大概用了半年了QT后,在cppreference文档里发现了nana库
nana库是用现代 C++ 风格的 GUI 编程( Boost 许可),我就尝试使用了nana进行开发,nana不是特别流行(可能是因为比较新的原因吧),nana中文页面还在开发,并没有中文文档,百度上也只有几个nana的hello world教程,几乎没有其他教程了
我开始尝试使用nana来重写我的插件,使用过程中,我只能不断的查手册,因为手册不是特别全面,所以有些地方也只能google
nana库来说 虽然没有中文资料,但是学起来还是比较简单,虽然没有图形化编程,但是只需几行代码就能实现一个界面,比前面几个方便多了。
优点:现代化、操作简单方便、可以直接写在插件中、交互性高(可以直接调用酷Q接口)
缺点:手册不是特别全、中文文档极少、没有图形化编程


最终
因为nana的交互性非常高,可以直接调用酷Q接口 (比如读取群列表、读取好友列表等)
最后还是nana最合适


直接打开nana官方可能会跳转到中文页面,中文页面会提示 “中文网站正在开发中” 建议用下边的链接打开英文页面
nana官方: http://nanapro.org/en-us/

下面是我用nana写的插件,可以给大家做参考
关键词触发器:https://github.com/zhaoguoqingit/KeyWord

附带一个nana的截图:
1.png




这些就是我在酷Q开发的一些经历
有什么建议或者其他界面库欢迎大家一起来讨论


被感谢 4

记笔记记笔记。
刚学C# 预习下CPP
我也是刚学的c# 详情回复 发表于 5-11 11:51
厉害了,大牛成长记,膜拜大佬,论坛地位-1
强大,我一直到现在都不会写界面。
强大,我一直到现在都不会写界面。
nana好像对一些细节的自定义不是很支持,比如按钮样式,阴影,边框,点击动画之类的细节,回头想想还是css写界面舒服
的确不是特别好看,但是可以直接写在SDK里面,直接调用酷Q接口就很方便 详情回复 发表于 4-7 20:04
AnimeH 发表于 2020-4-7 17:21
nana好像对一些细节的自定义不是很支持,比如按钮样式,阴影,边框,点击动画之类的细节,回头想想还是css ...

的确不是特别好看,但是可以直接写在SDK里面,直接调用酷Q接口就很方便
膜拜大佬,顺便问一下VS2019怎么配置nana
我加你了QQ了,直接在上面问问我吧 详情回复 发表于 4-9 11:20
可以用包管理器如(vcpkg),也可以自己去nana官方下载,下载后编译lib 详情回复 发表于 4-9 11:18
brokenpoems 发表于 2020-4-9 08:16
膜拜大佬,顺便问一下VS2019怎么配置nana

可以用包管理器如(vcpkg),也可以自己去nana官方下载,下载后编译lib
brokenpoems 发表于 2020-4-9 08:16
膜拜大佬,顺便问一下VS2019怎么配置nana

我加你了QQ了,直接在上面问问我吧
总感觉用Windows API更加原生一些,不知道为啥,也知道MFC,Qt啥的,但就是心里很抵触,只想用原来的......
尴尬,自己是易语言转的C++,还是喜欢写界面程序,就很尴尬

被感谢 1

之前也学过QT编程界面但是但是局限性也比较大没有库的话好难处理的
qt是可以静态编译成dll的
但是qt库需要自己编译
同时根据许可,程序必须开源
AnimeH 发表于 2020-4-7 17:21
nana好像对一些细节的自定义不是很支持,比如按钮样式,阴影,边框,点击动画之类的细节,回头想想还是css ...

同感,同感
1arn 发表于 2020-4-5 16:35
刚学C# 预习下CPP

我也是刚学的c#
可以前后端分离哦,插件作为server提供数据,控制面板制作为网页,这样在可以外网访问的电脑上还可以做到远程控制
与WPF异曲同工之妙

被感谢 1

您需要登录后才可以回帖 登录 | 注册

本版积分规则尽量使你的回复能够对他人有所帮助

Powered by Discuz!Designed by hexapp© 2020 CoolQ

快速回复返回顶部返回列表