Qt 浅谈(一)

蓝图分享网 2022-12-18 23:07:02 449阅读 0评论

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

 

Qt 浅谈(一) 第1张

 

 

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

 

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

 

2014年4月,随着跨平台集成开发环境Qt Creator 3.1.0正式发布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 浅谈(一) 第2张

 

需要注意一点的是:以上讲述的平台,均指的是操作系统,不是指的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 浅谈(一) 第3张

 

 

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高运行效率的同时,大大提高了开发效率。

 

Qt 浅谈(一) 第4张

 

 

因为,使用Python语言开发程序要比使用C++语言开发程序快得多。PyQt对Qt做了完整的封装,几乎可以用PyQt做Qt能做的任何事情。

 

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

 

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

 

 

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

 

Qt 浅谈(一) 第5张

 

 

 QPoint QMouseEvent::pos()

     这个只是返回相对这个widget(重载了QMouseEvent的widget)的位置。
Qt 浅谈(一) 第6张

② QPoint QMouseEvent::globalPos()

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

 

③ QPoint QCursor::pos()

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

 

④ 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());

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

免责声明:

1、本站所有资源文章出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。

2、本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户擦亮眼睛自行鉴别,做一个有主见和判断力的用户。

3、本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。

4、侵权违法和不良信息举报 举报邮箱:cnddit@qq.com

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
验证码
评论列表 (暂无评论,449人围观)

还没有评论,来说两句吧...