查看: 2582|回复: 57

大咖问答19期:白振勇助你一站式了解C++,Qt,PyQt三大领域

  [复制链接]

该用户从未签到

发表于 2020-11-11 09:40:49 | 显示全部楼层 |阅读模式
分享到:
960x160.jpg

本期我们邀请到了高级工程师“白振勇”老师参加电路城论坛第19期大咖问答(11月11日-11月22日);
白老师将在这段时间带着20年的实战经验为大家解答C++,Qt,PyQt三大领域相关方面的各种问题。

大咖简介:

白振勇,高级工程师,就职于电力系统监控软件产品供应商。
从业20年,曾带领团队多次完成千万资金级别的EMS/DMS监控主站产品的设计、研发、部署。
获得高级工程师职称、信息系统项目管理工程师资质、工信部项目经理资质。
带领团队开发的基于Qt的图形平台已成为公司主营产品的核心支撑组件。
曾因《iES-DMS1000 Extreme配电自动化主站系统》荣获山东省科技进步二等奖,3项国家发明专利的发明人,专利号为2016107789313、2016103952655、2018115141439。
著有《Qt 5/PyQt 5实战指南》。


主要作品:


《Qt 5/PyQt 5实战指南》

11111.png


本书特色

(1)兼顾Qt 5、PyQt 5。
  本书既有C++语言的Qt 5知识,又有Python语言的PyQt 5的知识。本书设计了130个精品案例,其中C++版的Qt 5案例78个,PyQt 5版的案例52个。通过学习两种编程语言的案例,可以更好的满足实际研发工作对编程技能的需求。

(2)系统性组织案例,真正实用。
  本书的组织有利于系统性学习开发技能。本书在内容组织上掌握循序渐进原则,前面的案例为后面的案例打基础。本书重点关注软件设计及实战技能,而非罗列一堆控件接口说明,比如:在开发大型项目时pri文件的设计与使用、配置文件的开发方法、类对象的二进制文件的序列化、向前兼容的二进制文件格式设计、带子属性的属性窗等都属于实用的软件研发技术案例。

3)配套练习,加深理解。
  除第1、23、24章外,每章后均附有配套练习,本书提供超过140道配套练习题。通过针对性练习,可以加深对知识的理解与掌握,更快投入真正的研发工作。

(4)拒绝从零开始。
  课件配套代码含有改动前的基础代码、改动后的最终代码。其中改动前的代码在src.baseline目录,改动后的最终代码在src目录。读者无需从零开始创建项目,可以在改动前的基础代码上对照案例讲解的内容直接进行修改,这样可以有效提高学习效率。在案例开头一般都配有运行效果图。


本期话题:

20年跨平台软件研发经验的老鸟带你走进C++,Qt,PyQt的世界



本期话题讨论内容:

1、Qt入门与提高
2、界面开发用PyQt 5有哪些案例?
3、C++跨平台开发如何着手?

本期超赞福利:


福利继续升级UP!!!

(1)奖品送出:本期大咖问答将送出5本《Qt 5/PyQt 5实战指南》(价值129元),将在问答结束后赠予5名积极参与提问的用户朋友。(工作人员将参考用户提出的问题质量和数量)

(2)免费课程:白老师在我们的摩尔吧开设了【PyQt 5实战指南】免费课程!!
感兴趣的工程师们点击链接直达课程主页:戳这里去上免费课程PyQt 5实战指南

微信图片_20201110174802.png

相信大家对于C++,Qt,PyQt相关方面会有不少的问题,那么不妨带着问题进入到本期的大咖问答吧

大咖问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。

下面欢迎大家就C++,Qt,PyQt相关方面方面的问题向白振勇老师提问,请直接在下方回帖提问。

往期《大咖问答》栏目内容:



回复

使用道具 举报

该用户从未签到

发表于 2020-11-11 18:20:04 来自手机 | 显示全部楼层
TLLED 发表于 2020-11-11 10:50
我有一个问题,QT ARM板应用程序可以使用LINUX PC机上安装QT Creator,搭建ARM平台的编译器完成应用程序编译 ...

大咖解答:是可以的,不过我没有实际经验。推荐一篇帖子,【Windows平台交叉编译Arm Linux平台的QT5.7库 - qinwanlin - 博客园】
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2020-11-11 18:27:16 来自手机 | 显示全部楼层
本帖最后由 baizy77 于 2020-11-12 08:39 编辑
mayumin 发表于 2020-11-11 18:14
大咖,我想请问pyQt与Qt c++的开发体验有什么具体的差异?使用Python开发效率有很大的提升吗? ...

大咖解答:我个人的观点是差异还是体现在语言本身。另外就是PyQt开发时如果需要查询Qt类库,一个办法是查询网页版的帮助(比如qt官网),另一个办法是查询assistant,这会稍显麻烦。由于语言自身的原因,PyQt运行会慢很多。从开发效率方面来讲,如果只是看Qt相关的内容,那么两者差不多,因为都用Qt类库,除了个别类比如字符串处理、数组等,python有自己的方法,因此PyQt中不提供这些类。除此之外,两者其他的功能基本一致。但是,如果从Python语言相关的库来说,网上有很多各种各样的库,可以有效提高开发效率,从这一点上讲,C++要逊色些。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2020-11-11 18:28:17 来自手机 | 显示全部楼层
大咖解答:从快速上手来说,python上手快些。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2020-11-12 08:54:29 | 显示全部楼层
ALTIUM2 发表于 2020-11-11 23:35
白老师您好,我是一个从嵌入式转为C++,顺带把QT也学习下的小菜,想向您请教几个问题啊。

1.像 ...

大咖解答:您好,感谢您的信任。
1,我理解您所指的是把程序发布成独立的EXE,运行时不再依赖Qt。这需要使用打包工具把编译好的程序打包。比如windeployqt。您可以自行查找一下这方面的内容,相关帖子还是比较多的。
2,对于Qt版本,我个人建议是Qt 5。我用过比较稳定的版本是Qt 5.5。一般来说,对于同一个大版本来说,选择小版本高的。仅供参考。
3,关于UDP丢包的现象,我个人没有碰到过。从网上的帖子找到如下方案,仅供参考。
   a.在程序中利用独立的接收线程用来接收UDP包;
   b.放弃Qt的QSocket,改用原生socket api;
   c.在接收线程中使用while死循环,并采用Socket默认的阻塞模式接收数据;

点评

白老师对问题梳理式解答,很受用啊!  发表于 2020-11-12 10:48
回复 支持 1 反对 0

使用道具 举报

该用户从未签到

发表于 2020-11-12 15:47:20 | 显示全部楼层
雪孩爱雪 发表于 2020-11-12 15:27
白老师您好!我应该已经入门了qt,但是没有实际项目的开发经验,但是自己做过复杂的图像处理opencv以及神经 ...

大咖解答:您好。我平时工作主要是C++,除了PyQt 5的界面开发之外,很少用到Python,因此很抱歉,对于Pyhon性能提升我没有很好的建议。在我看来,慢的问题是Python语言自身的特性决定的,因为这是解释型而非编译型语言。
如果更看重性能,建议采用C++。只是它的类库比Python少得多。但是一般情况下还够用,比如开发服务端可以用Poco,开发带界面的程序可以用Qt,如果展示曲线、棒图等,可以用QCustomPlot、QWT等。不知道我的回答您是否满意。在C++方面,我们可以继续深入交流。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2020-11-17 09:10:48 | 显示全部楼层
本帖最后由 baizy77 于 2020-11-21 16:38 编辑
Q向涵Q 发表于 2020-11-16 16:54
白老师,我想问下Qt比较做那方面的应用开发,如果学习的话是否有比较好的学习路线,避免走弯路? ...

大咖解答:您好。Qt擅长的是进行跨平台的C++桌面应用开发,比如Windows、Linux,当然了,Qt提供的功能远不止于此,用Qt也可以开发服务器类的程序,也就是不带界面的,因为Qt提供了非常丰富的类库封装,比如网络传输、蓝牙、串口等,Qt还提供了3D封装,只是我还没有尝试过。在移动端,Qt一直没有火起来,可能是因为Android、iOS自身提供的功能太好用了吧。如果学习Qt,可以从看视频开始学习,看完后,多做些练习。然后选择几个小型项目去体验一下,比如做个FTP工具、多媒体播放器、学生管理系统等,这样会积累更丰富的经验。其中很重要的一点是,从一开始就要养成良好的编程习惯,比如遵从编码规范、遵从产品开发的经验性做法等。如果感兴趣的话,可以看看我写的书。是从产品开发的角度写的,相对系统一些。
回复 支持 2 反对 0

使用道具 举报

该用户从未签到

发表于 2020-11-13 09:06:11 | 显示全部楼层
qiaoboyuan 发表于 2020-11-12 16:14
白老师你好啊,我最近需要开发闭源商用软件,PyQt和PySide正在思考该用哪一个?以你目前的经验来看:这两个 ...

大咖解答:目前PyQt由Riverbank Computing维护的,PyQt历史更长一些,比较稳定,开发社区也比较大,有相关的deploy工具。而PySide(又名Qt for Python)现由Qt公司维护,比PyQt更年轻一些。截至2019年,两者最新版本分别是PyQt5和PySide2。其实他俩API挺相似的,最大的区别是License,PyQt是GPL协议,Qt for Python是LGPL协议,前者不能商用。目前从各方面来看PyQt速度更快、工具更齐全,个人觉得是开发时间比较早的原因,根据开源协议,Qt for Python的实现要避开PyQt已经实现部分的实现方法。一家之言,供参考。
回复 支持 1 反对 0

使用道具 举报

该用户从未签到

发表于 前天 09:37 | 显示全部楼层
独活草 发表于 2020-11-22 16:17
白老师您好,我想问的是 在QT 环境里,有HDMI相关的调用函数吗?

在Qt助手(assistant)中使用搜索功能查找到HDMI相关的内容,从Qt 5.11开始支持屏幕克隆,是通过配置的方式而不是API。具体我没有研究过。
{
    "device": "/dev/dri/card0",
    "outputs": [
        { "name": "HDMI1", "mode": "1920x1080" },
        { "name": "DP1", "mode": "1920x1080", "clones": "HDMI1" }
   ]
  }
回复 支持 1 反对 0

使用道具 举报

  • TA的每日心情
    开心
    9 小时前
  • 签到天数: 629 天

    连续签到: 2 天

    [LV.9]以坛为家II

    发表于 2020-11-11 10:50:40 | 显示全部楼层
    我有一个问题,QT ARM板应用程序可以使用LINUX PC机上安装QT Creator,搭建ARM平台的编译器完成应用程序编译,在Windows下安装的QT能编译ARM板的应用程序吗?需要那些工具,配置什么?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2018-8-28 11:07
  • 签到天数: 2 天

    连续签到: 2 天

    [LV.1]初来乍到

    发表于 2020-11-11 18:14:22 | 显示全部楼层
    大咖,我想请问pyQt与Qt c++的开发体验有什么具体的差异?使用Python开发效率有很大的提升吗?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-1-9 09:25
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2020-11-11 18:17:37 | 显示全部楼层

    你好啊,最近想写一个工具用来调试协议,写桌面应用程序到底是pyQt快还是C++加Qt快?

    我是C出身的,对于python和C++都只是学习过,但是目前为止没有项目经验。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-9-28 22:37
  • 签到天数: 456 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2020-11-11 23:35:57 | 显示全部楼层
    白老师您好,我是一个从嵌入式转为C++,顺带把QT也学习下的小菜,想向您请教几个问题啊。

    1.像我一般用MFC(很古老了),总是感觉MFC的那种静态编译生成一个小EXE比QT方便多了,但是QT有跨平台的优势,界面比较的炫酷,有什么方法把QT也生成单独的exe这种?
    2.QT版本比较多,LTS的版本也好几个,但是我们有些设备有些老旧,用QT4还是QT5会相对好点,哪个更稳定,比如QT5.6
    3.我曾经遇到过一个问题,QT在收发UDP数据包的时候,会丢包的现象,在Windows平台会有这个问题,有什么解决方法?

    感谢感谢
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-10-24 13:22
  • 签到天数: 25 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2020-11-12 15:27:02 | 显示全部楼层
    白老师您好!我应该已经入门了qt,但是没有实际项目的开发经验,但是自己做过复杂的图像处理opencv以及神经网络项目。
    我是在windows的pyqt5开发,程序在执行过程中十分的缓慢,我觉得是python执行速度原因。请教下,一般用pyqt开发,代码速度的优化一般有哪些方法,或者您有哪些建议。
    另外,您实际应用项目中中型软件的开发是采用python还是C++,我想自己现在的实际工作的展开能向实际应用展开。我目前的工作是在图像处理中,主要是opencv以及深度学习。
    谢谢您。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|电路城

    GMT+8, 2020-11-25 21:38 , Processed in 0.127291 second(s), 28 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.