[虚心求教] 关于前端研发如何以正确姿势入门 C++以及 Qt 框架

2023-09-08 11:15:04 +08:00
 0829ewlLuna

如题,最近司内的桌面端需求需要转向 Qt 框架,作为一个只接触过 Electron 的前端研发,目前需要学习相关的语言和框架知识,求问各位大佬以及巨佬们,能给我指一条学习路线吗?目前在看油管 Cherno 大佬的 C++入门课程以及组内大佬分享的 Qt 课程,但是自己还是想先列一个计划,规划一下优先学习、重点学习以及可以稍微放一放的内容。

求大佬们不吝赐教哇~

2923 次点击
所在节点    程序员
27 条回复
0829ewlLuna
2023-09-11 10:20:06 +08:00
@tool2d 害,么的办法,这个是团队内的决策,我只能跟着做,跟着学
0829ewlLuna
2023-09-11 10:20:43 +08:00
@listenerri 好嘞,感谢大佬
0829ewlLuna
2023-09-11 10:22:11 +08:00
@NoOneNoBody 感谢大佬详细的回复,我研究研究
0829ewlLuna
2023-09-11 10:26:11 +08:00
在这里统一感谢下各位热情回复的大佬们!!! 8 亏是 V 站,受益良多
ysc3839
2023-09-11 11:58:26 +08:00
@0829ewlLuna 个人感觉上 Qt 省不了多少内存,不过我没具体调查过,具体如何不好评价
NoOneNoBody
2023-09-11 17:36:09 +08:00
忘了提一下,qt 大版本区别还是比较大的,现在 qt4/qt5/qt6 三个大版本都有一些变化,尤其 4 和 5 之间很难移植,5 移植到 6 还好一点,改动不多
看文档不要看最新的,而是看你用的是哪个版本

#12 说得对,后端代码要分拆
我自己有个玩意就是 GUI 和 CLI 用相同的代码计算,把 qt 界面的东西另外写,发送信号 qthread 调用后端计算
平时增加资料用 cli 多(可以批量),读取查找用 GUI 多,因为查出的数据字符串长,cli 再输入麻烦,不如直接点击执行

=============
顺便说一下 qt 状态机 QtCore.QStateMachine ,帮你省点时间
单个控件的变化没必要用,适用场合就是控件之间的联动

举个例子
有个 checkbox 名为 s ,其属性 checked=True|False 产生两种情况:
另外有 5 个控件(abcde),对应上述两种情况显示或隐藏

定义一个状态机 m ,状态数为 2 ,

然后按顺序设定
状态 0 (序号),m.states[0]
assignProperty m.states[0].assignProperty(控件, 属性, 值)
添加 a, 属性 visible ,值 True ,再照样添加 b ;分别添加 ced ,属性 visible 为 False
还可以添加自定义属性用于控制数据,但略微复杂,此处略
addTransition
添加 s.clicked 事件跳转到状态 1 (因为这个状态是 0 ,所以这里添加的事件应该是指向其他状态)
还可以添加更多的事件,例如键盘按键、鼠标右键……,此处略
多种状态还能添加不同的事件对应不同的跳转,反正思想就是事件驱动相应变化,此处略

状态 1
assignProperty
添加 a, 属性 visible ,False ,再照样添加 b ;添加 ced ,属性 visible 为 True
addTransition
添加 s.clicked 跳转到状态 0

另外还有 entered.connect ,exited.connect 表示进入或离开某个状态时,顺便发送信号执行指定函数,这是进阶用法,将来自己研究吧

然后设定初始状态为 0 (序号)
或者设为为 int(s.isChecked()),相当于由 s 的初始状态决定,这里 True|False 对应 1,0

最后绑定 m 到当前窗口,这样就完成了一个简单状态机
点击 s ,界面就会切换两种状态(uncheck 对应状态 0),一种是只显示 ab ,cde 隐藏;另一种是隐藏 ab ,显示 cde
注意序号,不要 s 的初始状态为 True ,默认状态却设了 0 ,这样两种状态就相反了(当然也可以是本来的目的就是反向)

这是一个很简单的例子,状态机可以做到更为复杂,例如子状态、抽象、轮询等等,也可以绑定到某个控件而不是窗口,这就看个人的想象力和逻辑功力了

状态机也可以纯粹用函数去实现,不是必须的,如果理解不了状态机,也可以用函数逐个控件改变属性
我试过联动几十个属性变化,用函数逐条写累死人,还有漏掉的,自定义类继承状态机,扔一堆参数过去就自行生成比较清晰,因为就算有错漏或者增减变化,也只是改参数的事
0829ewlLuna
2023-09-11 17:42:21 +08:00
@NoOneNoBody 再次跪谢大佬的回复,目前切换的版本是 qt5 ,当前在看的文档也是找了对应的版本在看的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/971975

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX