服务热线:010-82667852


地址:北京市海淀区马甸东路

17号2806

邮编:100088

电话:010-82667852

传真:010-82667852-608

E-Mail:sales@bafangonline.com


Address:Room 2806, 28th Floor, 17 Madian East Road, Haidian District, Beijing

Zip code:100088

Tel:010-82667852

Fax:010-82667852-608

E-Mailsales@bafangonline.com


Qt 浅谈(一)
发布时间:2022-04-24 14:25

Qt 是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。


它是一款面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正地组件编程。



Qt框架开发平台_北京八方在线软件代理商


2008年,Qt Company科技被诺基亚公司收购;随后的4年里,因为各种原因最终导致于2012年,被Digia收购。



2014年4月,随着跨平台集成开发环境Qt Creator 3.1.0正式发布Qt也开始逐渐的暴露在工程师的眼下,真正的开始被应用于工业开发等方面。


Qt工业开发_北京软件代理商


1、Qt能在哪些平台使用?


Qt支持下述平台:


MS/Windows - 95、98、NT4.0、ME、2000、XP 、 Vista、Win7、win8、win2008、win10


Unix/X11 -Linux、SunSolaris、HP-UX、CompaqTru64 UNIX、IBMAIX、SGI IRIX、FreeBSD、BSD/OS和其它很多X11平台


Macintosh -Mac OS X


Embedded - 有帧缓冲(framebuffer)支持的嵌入式Linux平台,Windows CE、Symbian、Symbian^3、Symbian Anna、Symbian Belle、MeeGo、haiku-os。


Qt工业开发_北京软件代理商


需要注意一点的是:以上讲述的平台,均未操作系统,不是指的CPU以及计算机设备。


2、Qt是开源的,还是收费的?


Qt 有两个许可证:LGPL和GPL协议。


这两个协议在现在的 Qt 版本中的代码是完全一致的(潜在含义是,Qt 的早期版本,商业版的 Qt 通常包含有一些开源版本所没有的库,比如 QtSingleApplication 这个库)。


所以现在对于普通开发人员和部分商业公司来说,使用 LGPL 版本的 Qt 可以节省很大的开销。


这两个版本最大的区别在于,前者是免费的,后者是收费的。既然代码都是一致的,所以费用就要是用来购买 Qt 的售后服务和培训等等相关服务。


3、Qt是使用什么语言开发的?


Qt是集成了基于Clang的C/C++代码模块。


4、除了Qt Creator,还有什么IDE可以用?


目前比较流行的是Visual Studio,简称VS。Qt Creator一安装好就能使用,但是VS是需要自己设置才可以用。


Qt Creator


5、在Qt的众多版本中,新手更应该学习哪一个版本?


对于新手来说,Qt5是一个很好地选择。


目前 Qt 的版本已经更新到 Qt6,Qt6 的技术手册和内容相对于 Qt5 来说还不够完善,所以相对于新手学习来讲 Qt5 才是一个更好的选择。


如果您想问哪里有关于 Qt5 的学习资料,可以看官网 自带的英文文档,或者查找《Qt Creator快速入门》、《Qt Quick核心编程》等。


6、工业开发使用Qt可以吗?


可以的,Qt M2M的协议扩展中包含了 Qt 的设备创建套件,更大程度上的提供给了设计师们最大和最高效的嵌入式工业系统所需的通信协议和互操作性功能,更大程度上减少了我们在开发时所消耗的时间。


7、基于Qt开发的产品是否有很多?


多玩的YY,金山的WPS都是基于Qt的,其用户群体过亿。


8、PyQt5是干嘛的?


PyQt是一个用于创建GUI应用程序的跨平台工具包,它将Python与Qt库融为一体。也就是说,PyQt允许使用Python语言调用Qt库中的API。这样做的最大好处就是在保留了Qt高运行效率的同时,大大提高了开发效率。因为,使用Python语言开发程序要比使用C++语言开发程序快得多。PyQt对Qt做了完整的封装,几乎可以用PyQt做Qt能做的任何事情。


PyQt5_GUI应用程序


9、qt支持3d图形渲染吗?


QtQuick3D在Qt 6.1中引入了对实例渲染的支持。这是图形处理器(GPU)的一项功能,可以极大地提高性能。实例化渲染可以通过一次绘制调用来渲染大量项目。(对于熟悉低级OpenGL的人来说,函数glDrawElementsInstanced是一个示例。)


10、Qt 获取控件位置坐标、窗口坐标?


① QPoint QMouseEvent::pos()

    这个只是返回相对这个widget(重载了QMouseEvent的widget)的位置。


② QPoint QMouseEvent::globalPos()

     窗口坐标,这个是返回鼠标的全局坐标。


③ QPoint QCursor::pos() [static]

     返回相对显示器的全局坐标。


④ QPoint QWidget::mapToGlobal(const QPoint & pos)  const

     将窗口坐标转换成显示器坐标。


⑤  QPoint QWidget::mapFromGlobal(const QPoint & pos) const

     将显示器坐标转换成窗口坐标。


⑥  QPoint QWidget::mapToParent(const QPoint & pos) const

     将窗口坐标获得的pos转换成父类widget的坐标。


⑦ QPoint QWidget::mapFromParent(const QPoint & pos) const

     将父类窗口坐标转换成当前窗口坐标。


⑧ QWidget::pos() : QPoint

     这个属性获得的是当前目前控件在父窗口中的位置。


⑨ QCursor::pos() == QMouseEvent::globalPos() 

    全局坐标。


⑩QMouseEvent::globalPos() == ui.posBtn->mapToGlobal(ui.posBtn->pos());

    将鼠标的坐标转换成全局坐标。



  • 北京八方在线科技有限公司
  • 北京地址(总部):北京市海淀区马甸东路17号金澳国际写字楼28层2806

    香港八方在線科技有限公司:香港九龍旺角亞皆老街111號皆旺商業大厦9樓902A

    电话:010-82667852(北京)   +85 56103055(香港)

    深圳(分部):深圳市福田区福虹路世贸广场A座

    电话:17324435645

    杭州(分部):浙江省杭州市余杭区崇贤街道星海南路188-11号1幢224室

    电话:13810147175

    邮编:100088

    传真:010-82667852-20

    E-Mail:sales@bafangonline.com(内地)   sales-hk@bafangonline.com(香港)

  • 24小时客服热线

    010-82667852

    传真:010-82667852-20
    北京八方在线科技有限公司