# Qt 技术研究说明
目前星火的Qt开发技术太薄弱了,需要积累相关的技术,才能开发出更优质的客户端出来。        
学习Qt相关的书,网络上Qt的系列教程,研究开源的Qt程序。     
分析学习DTK源码和深入学习Qt。       
暂时我还没有一个清晰的目标,我希望后续能够指定一个规划,来攻克技术难点,持续学习、开发。    
开发Linux桌面应用,是一件非常有意思的事情,哈哈,能够满足我的情趣,也能学到技术,交到朋友。  

学好这些,真正有技术实力的人,找工作就是小case了,哈哈。    

**要研究的技术点**
* [ ] 如何自定义绘制控件,DTK的很多控件都是自就义绘制的,真心漂亮,得学到手。
* [ ] Linux 如何做到静默安装,申请一次权限,后续下载成功后直接安装,能像Deepin商店那样静默安装就更好了。    
* [ ] Linux 应用开发的相关技术,DBus事件通信
* [ ] 离线缓存应用,把客户端需要的数据一次性下载到本地sqlite里,只有在数据有更新的时候才重新下载。  
* [ ] QML桌面应用开发   
* [ ] 多线程应用,线程池、线程暂停恢复、任务队列,看看怎么来封装一个完善的出来,之前研究好久我没咋搞懂。   

**高手的Qt教程**
* [ ] 偕藏的Qt及DTK研究教程 https://github.com/xmuli/QtExamples

**Qt/C++书籍攻读**          
* [ ] Qt高级编程 Advance Qt Programming Creating Great Software with C++ and Qt4 
* [ ] C++ GUI Qt4 编程 C++ GUI Programming with Qt 4
* [ ] Rapid GUI Programming with Python And Qt
* [ ] Qt5 C++ GUI Programming Cookbook
* [ ] Qt5 Blueprints
* [ ] Mastering Qt5 
* [ ] Learn Qt 5
* [ ] Hands-On GUI Programming with C++ and Qt5
* [ ] C++ 并发编程实战
* [ ] Qt中的C++技术
* [ ] Linux与Qt程序设计
* [ ] C++ Qt 设计模式
* [ ] Qt及Linux操作系统窗口设计 

**开源Qt程序研究**  
* [ ] An app store for DDE built with DTK https://github.com/dekzi/dde-store
* [ ] PyQt Examples https://github.com/PyQt5/PyQt   
* [ ] pyqt + qt quick qml 工具集 https://github.com/lzx8589561/ZTool
* [ ] Some useful apps based on PyQt5 https://github.com/taseikyo/PyQt5-Apps   
* [ ] TurtleBrowser is intended to become a full featured browser https://github.com/turtlebrowser/turtlebrowser    
* [ ] 【Qt】【C++】五子棋游戏,游戏双方联网对战。(服务器+客户端) https://github.com/Leopard-C/Gobang

**进阶Qt/C++技术点**
* [ ] Qt 上位机程序开发
* [ ] OpenCV 计算机视觉 识别图像
* [ ] C++ 音视频编码,这个很高端,做直播有用到  
* [ ] Socket TCP/IP 网络通信,做即时通讯很有用处    

# 星火开发组Qt Demo
放一些大家写的Demo,方便参考学习和测试。    

## QPushButton 图标左对齐文字剧中
[QProxyStyleTest](./Components/QProxyStyleTest/)  参考以下的内容      
* qpushbutton icon left alignment text center alignment 「Python实现的代码很简洁」https://stackoverflow.com/questions/56129402/qpushbutton-icon-left-alignment-text-center-alignment
* QPushButton icon aligned left with text centered 「第二个回答就是,但是好复杂唉」 https://stackoverflow.com/questions/44091339/qpushbutton-icon-aligned-left-with-text-centered

![](./Components/QProxyStyleTest/screenshot.png)

## 多线程下载
[MultiplethreadDownload](./Components/MultiplethreadDownload/)         

测试视频下载地址 https://www.learningcontainer.com/wp-content/uploads/2020/05/sample-mp4-file.mp4       

多线程下如何更新下载进度的问题,还没解决。可以需要将线程任务单独拆分到Worker类里面。        

参考内容        
* CoverEars(迅雷不及掩耳,Qt版多线程下载器) https://github.com/xj361685640/CoverEars-Qt 

![](./Components/MultiplethreadDownload/screenshot.png)

# C++ 相关DEMO
用来测试练习C++技术的。 

C++实现的线程池,有些问题 [点击查看](./ThreadPool)