zoukankan      html  css  js  c++  java
  • 01:认识QT

    Qt:

    Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展及一些宏,Qt很容易扩展,并且允许真正地组件编程。

    ——百度百科

    Qt Creator:

    Qt Creator是一个用于Qt开发的轻量级跨平台集成开发环境。Qt Creator可带来两大关键益处:提供首个专为支持跨平台开发而设计的集成开发环境 (IDE),并确保首次接触Qt框架的开发人员能迅速上手和操作。即使不开发Qt应用程序,Qt Creator也是一个简单易用且功能强大的IDE。

    ——百度百科

    Qt 可以做什么?

    Qt 虽然经常被当做一个 GUI 库,用来开发图形界面应用程序,但这并不是 Qt 的全部;Qt 除了可以绘制漂亮的界面(包括控件、布局、交互),还包含很多其它功能,比如多线程、访问数据库、图像处理、音频视频处理、网络通信、文件操作等,这些 Qt 都已经内置了。
    Qt 是应用程序开发的一站式解决方案,有了 Qt,你就可以高枕无忧了!Qt 本身包含的模块也日益丰富, 一直有新模块和第三方模块加入进来。 
    大部分应用程序都可以使用 Qt 实现,除了与计算机底层结合特别紧密的,例如驱动开发,它直接使用硬件提供的编程接口,而不能使用操作系统自带的函数库。
    1997年,Qt 被用来开发 Linux 桌面环境 KDE,大获成功,使 Qt 成为 Linux 环境下开发 C++ GUI 程序的事实标准。
    下面的程序都使用 Qt 开发:WPS、YY语音、Skype、豆瓣电台、虾米音乐、淘宝助理、千牛、暴雪的战网客户端、VirtualBox、Opera、咪咕音乐、Google地图、Adobe Photoshop Album 等。
    Linux 也是嵌入式的主力军,广泛应用于消费类电子、工业控制、军工电子、电信/网络/通讯、航空航天、汽车电子、医疗设备、仪器仪表等相关行业。
    Qt 虽然也支持手机操作系统,但是由于 Android 本身已经有 Java 和 Kotlin,iOS 本身已经有 Objective-C 和 Swift,所以 Qt 在移动端的市场份额几乎可以忽略。
    总起来说,Qt 主要用于桌面程序开发和嵌入式开发。

    ——C语言中文网

    Qt 是一个跨平台的框架。跨平台 GUI 通常有三种实现策略:

    1. API 映射:API 映射是说,界面库使用同一套 API,将其映射到不同的底层平台上面。大体相当于将不同平台的 API 提取公共部分。比如说,将 Windows 平台上的按钮控件和 Mac OS 上的按钮组件都取名为 Button。当你使用 Button 时,如果在 Windows 平台上,则编译成按钮控件;如果在 Mac OS 上,则编译成按钮组件。这么做的好处是,所有组件都是原始平台自有的,外观和原生平台一致;缺点是,编写库代码的时候需要大量工作用于适配不同平台,并且,只能提取相同部分的 API。比如 Mac OS 的文本框自带拼写检测,但是 Windows 上面没有,则不能提供该功能。这种策略的典型代表是 wxWidgets。这也是一个标准的 C++ 库,和 Qt 一样庞大。它的语法看上去和 MFC 类似,有大量的宏。据说,一个 MFC 程序员可以很容易的转换到 wxWidgets 上面来。
    2. API 模拟:前面提到,API 映射会“缺失”不同平台的特定功能,而 API 模拟则是解决这一问题。不同平台的有差异 API,将使用工具库自己的代码用于模拟出来。按照前面的例子,Mac OS 上的文本框有拼写检测,但是 Windows 的没有。那么,工具库自己提供一个拼写检测算法,让 Windows 的文本框也有相同的功能。API 模拟的典型代表是 wine —— 一个 Linux 上面的 Windows 模拟器。它将大部分 Win32 API 在 Linux 上面模拟了出来,让 Linux 可以通过 wine 运行 Windows 程序。由此可以看出,API 模拟最大优点是,应用程序无需重新编译,即可运行到特定平台上。另外一个例子是微软提供的 DirectX,这个开发库将屏蔽掉不同显卡硬件所提供的具体功能。使用这个库,你无需担心硬件之间的差异,如果有的显卡没有提供该种功能,SDK 会使用软件的方式加以实现。(关于举例,可以参考文末一段精彩的讨论。)
    3. GUI 模拟:任何平台都提供了图形绘制函数,例如画点、画线、画面等。有些工具库利用这些基本函数,在不同绘制出自己的组件,这就是 GUI 模拟。GUI 模拟的工作量无疑是很大的,因为需要使用最基本的绘图函数将所有组件画出来;并且这种绘制很难保证和原生组件一模一样。但是,这一代价带来的优势是,可以很方便的修改组件的外观——只要修改组件绘制函数即可。很多跨平台的 GUI 库都是使用的这种策略,例如 gtk+(这是一个 C 语言的图形界面库。使用 C 语言很优雅地实现了面向对象程序设计。不过,这也同样带来了一个问题——使用大量的类型转换的宏来模拟多态,并且它的函数名一般都比较长,使用下划线分割单词,看上去和 Linux 如出一辙。gtk+ 并不是模拟的原生界面,而有它自己的风格,所以有时候就会和操作系统的界面格格不入。),Swing 以及我们的 Qt。

    ——Qt学习之路

    还有一个很通俗易懂的api的解释https://www.jianshu.com/p/29569a3a0f41

  • 相关阅读:
    Design Pattern Explained
    StringBuilder or StringBuffer
    Algorithms
    Difference between pages and blocks
    Date Time Calendar
    Math if fun
    Sublime Text
    Java Regex
    Learning C
    跨域通信/跨域上传浅析
  • 原文地址:https://www.cnblogs.com/yige2019/p/12284790.html
Copyright © 2011-2022 走看看