ARTICLE DETAIL

资讯详情

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

我的qt学习小结

我的qt学习小结 职坐标的 Qt 学习阶段已经结束了。回头想想这段日子其实挺感慨的。我刚进来那会儿连 C 基础都磕磕绊绊到现在能自己写信号槽、玩 Qt 多线程、搭 Qt 网络通信还做了一个像模像样的桌面项目变化是真的大。先说 Qt 的面向对象这块。一开始看 QObject、QWidget 这一大坨类图背得出来但说不上有感觉。后来代码写多了我才慢慢品出味儿来——Qt 这套框架核心真不是背 API而是怎么搭对象树、怎么用信号槽把对象连起来。最早自己手写回调时心里总是怕函数指针挂错了调不通。后来学了信号槽机制把对象之间的通信交给 connect()谁发谁接一目了然这才踏实了也真正懂了 Qt 元对象系统 moc 的威力。再后来我把信号槽、智能指针、事件过滤器塞进自己写的 QObject 派生类里又配合 QVariant 和 qRegisterMetaType跨线程发信号也能稳稳运行。这一套串下来零碎的知识点终于连成了线每次调试报错都在帮我往底层多看一眼。设计模式那段时间也让我开了眼。Qt 里事件过滤器就藏着职责链的影子QObject 的 parent-child 体系就是现成的组合模式QPluginLoader 一加载就是策略模式简单工厂配上自定义接口插件主逻辑一行不用动就能接入新功能那种对扩展开放、对修改关闭的爽感真的会上瘾。学到这儿我才反应过来模式不是死套路是前人踩了一堆坑总结出来的经验。容器这块我学得也挺过瘾。QList 怎么自动扩容、QMap 为啥基于红黑树、QHash 怎么哈希、迭代器怎么用一套写法遍历各种容器我一边用一边琢磨它背后的设计。QString 和 QStringList 是日常最常用的字符串类型和 std::string 互转方便也慢慢养成了有现成的就不重复造轮子的习惯。到了项目阶段我把这些全用上了。这次我做的是一个音乐播放器 语音视频聊天的小系统。Qt 一把梭搭起来——播放模块用 QMediaPlayer 把音频解码、播放控制全包了列表用 QMediaPlaylist 一首一首装UI 用布局管理器堆播放、暂停、上一首、下一首很快就跑起来了。播放列表怎么存我用 QSettings 把用户偏好存下来再把歌单 JSON 化落磁盘重启程序还能还原。中间踩了不少坑——播放格式不支持、URL 编码、空指针读列表一个个抠过来才明白接口好写坑就藏在细节里。然后是语音视频聊天模块。QTcpServer 做服务端、QTcpSocket 接客户端麦克风采集的音频数据打成字节流就传过去。线程里访问 UI 控件崩溃是项目里第一个真正想通的地方熬了三天。我学会了一课UI 控件只能在主线程碰工作得扔到 QThread 子线程里去。后期加了视频流发现字节流一旦超过一次缓冲区就要拆包合包一个个抠过来之后我对程序怎么跟网络打交道这事才有了真切的体会。整个项目从需求、模块划分到编码、调试再到最后跑通每一步踩的坑最后都成了经验。
返回列表