基于QT学习内容分享———QT简介

  1. Qt 是一个 1991 年由Haavard Nord 和 Eirik Chambe-Eng 开发的跨平台
    C++图形用户界面应用程序开发框架,发展至今,它既可以开发GUI程序,也可以开发非GUI程序,比如控制台工具和服务器.Qt同Linux上的Motif、Openwin、 GTK等图形界面库和Windows平台上的MFC、OwL、VCL、ATL是同类型的,与其他用户开发界面的软件相比,Qt更容易使用和学习。
    Qt是一个跨平台的C++应用程序框架,支持Windows. Linux. Mac OS X. Android. iOS.Windows Phone、嵌入式系统等,也就是说,Qt可以同时支持桌而应用程序开发、嵌入式开发和移动开发,覆盖了现有的所有主流平台。开发者只需要编写一次代码,而后在发布到不同台之前重新编译即可。
    Qt不仅仅是一个GUI库,除了可以创建漂亮的界面,还有很多其他组性。例如,开发不再需要研究STL,不再需要C++的头文件,也不再需要去找解析XML、连接数据库、Sock的各种第三方库,因为这些组件已经内置在Qt中了Qt是应用程序开发的一站式解决方案!Qt虽然庞大,封装层次较深,但是速度并不慢虽不及MFC.但比Java,C#要快.Qt程序在运行前最终会编译成本地计算机的可执行代而不是依托虚拟机来运行.Qt的工具家族丰富,目前包括Qt Creator、QtEmbedded、Qt Design快速开发工具、Qt Linguist国际化工具等。非常适合跨平台开发领域,是 C++程序员要掌握的第二主流开发工具(第一要掌握主流开发工具是Visual C++) . Qt的最新版本可以从官网(https://www.qt.io/)上下载,作在编写本书时的最新版本是Qt5.12.Qt 是一个 1991 年由Haavard Nord 和 Eirik Chambe-Eng 开发的跨平台C++图形用户界面应用程序开发框架,发展至今,它既可以开发GUI程序,也可以开发非GUI程序,比如控制台工具和服务器.Qt同Linux上的Motif、Openwin、 GTK等图形界面库和Windows平台」的MFC、OwL、 VCL、ATL是同类型的,与其他用户开发界面的软件相比,Qt更容易使用和学习。
    Qt是一个跨平台的C++应用程序框架,支持Windows. Linux. Mac OS X. Android. iOS.Windows
    Phone、嵌入式系统等,也就是说,Qt可以同时支持桌而应用程序开发、嵌入式开和移动开发,覆盖了现有的所有主流平台。开发者只需要编写一次代码,而后在发布到不同台之前重新编译即可。Qt不仅仅是一个GUI库,除了可以创建漂亮的界面,还有很多其他组性。例如,开发不再需要研究STL,不再需要C++的头文件,也不再需要去找解析XML、连接数据库、Sock的各种第三方库,因为这些组件已经内置在Qt中了Qt是应用程序开发的一站式解决方案!Qt虽然庞大,封装层次较深,但是速度并不慢虽不及MFC.但比Java,C#要快.Qt程序在运行前最终会编译成本地计算机的可执行代而不是依托虚拟机来运行.Qt 的工具家族丰富,目前包括Qt Creator、QtEmbedded、Qt Design快速开发工具、 Linguist国际化工具等。Ot 非常适合跨平台开发领域,是C++程序员要掌握的第二主流开发工具(第一要掌握主流开发工具是Visual C++) . Qt的最新版本可以从官网(https://www.qt.io/)上下载,学习时的最新版本是Qt5.12.
    Qt 是一个跨平台的 C++图形用户界面应用程序的框架,给应用程序开发者提供了构建艺术级图形用户界面所需的功能。Qt很容易扩展,并且允许引用组件进行编程。与GTK、KDE、MFC、OWL、VCL、ATL一样,Qt也是一款图形界面库。
    Qt的优点如下:(1)优良的跨平台特性。Qt支持Microsoft Windows、Linux、Solaris、SunOS、HP-UX、Digital UNIX (OSF/1, Tru64)、Irix、FreeBSD、 BSD/OS、 SCO、 AIX. OS390、QNX等操作系统。(2)面向对象的程序设计。Qt的良好封装机制使得模块化程度非常高,可重用性较好,对于用户开发来说非常方便。Qt提供了一种称为信号/槽(Signal/Slot)的安全机制来替代回调(Callback)机制,使得各个组件之间的协同工作变得十分简单。
    Qt 是一个跨平台的 C++图形用户界面应用程序的框架,给应用程序开发者提供了构建艺术级图形用户界面所需的功能。Qt很容易扩展,并且允许引用组件进行编程。与GTK、KDE、MFC、OWL、VCL、ATL一样,Qt也是一款图形界面库。Qt的优点如下:(1)优良的跨平台特性。Qt支持Microsoft
    Windows、Linux、Solaris、SunOS、HP-UX、Digital UNIX (OSF/1, Tru64)、Irix、FreeBSD、 BSD/OS、 SCO、 AIX. OS390、 QNX等操作系统。(2)面向对象的程序设计。Qt的良好封装机制使得模块化程度非常高,可重用性较好,对于用户开发来说非常方便。Qt提供了一种称为信号/槽(Signal/Slot)的安全机制来替代回调(Callback)机制,使得各个组件之间的协同工作变得十分简单。
    在当今基于 C++的图形界面开发领域,能与Qt相抗衡的只有 MFC.MFC是微软公司的基础类库,自然得天独厚,比如开发深层次的Windows应用远超Qt,但Qt也有杀手钢,那就是跨平台,这两点大家一日了然,下面我们再来比较一下它们的其他特点。(1)开发速度就整体而言.MFC可能会快捷一些,因为Windows平台的开发工具大多很智能,因为立足于Windows的开发人群很广,从菜鸟到专业人士(开发人员一多,技术参考就多,周围可以咨询问题的人就多)。相比较而言,Qt基于Linux可用的开发工具不多,而且这些工具大都比较专业。多是第三方的产品,加上这些工具的集成度不高,支持的第三方库也没有支持MFC 的第三方库多,因而从这一点看 MFC 略胜一筹。不过,Qt 自从被诺基亚公司收购后。官方发布了跨平台集成开发环境 QtCreator,之后的走向就不好说,总体感觉就是 Qt Creator和VS差距比较大,还需要改进,从库本身来说,Qt集成的功能比MFC庞大,而且使用的封装技术(信号/槽)倍受赞许。比如 Qt Script 为Qt提供了嵌入式脚本, Qt 界面库支持 CSS. 所以 Qt 构建出来的界面比MFC要好,且实现过程也比较容易.为了降低使用Windows SDK开发的难度以及提高使用WindowsSDK开发的效率,MFC采用的是浅层封装(最新的2008 spl加入了BCG的高级界面库,可能有所改善) Windows SDK.这个方面相比而言,Qt库比MFC优秀.不过.这两个库久经号验,稳定性都很高,几乎没有什么Bug.(2)运行效率MFC采用浅层封装,运行效率比较高,加上VC对Windows进行了针对性的优化,因而整体性能是比较高的,但是如果加入第三方库就不敢保证整体的高性能了.QT 库比较境大封装层次较深,所以运行效率比MFC低,不过在如今主流计算机系统的配置下人们不太会介意这点性能差别了.(3)应用范围如今Windows的普及率无人能及,MFC的使用人数自然较多,相比而言.Qt主要是Linu下的开发人员在使用.MFC不支持嵌入式开发(主要是指手机平台);而Qt有对应的支持模块,虽然被Java 碾压,但是还有使用空间。(4)学习难度Qt的封装方式比较明晰,和系统隔离得比较好,学习门槛不高.MFC权难精透,因为深入开发之后还需要了解SDK,否则开发出的程序比较初级。3在当今基于 C++的图形界面开发领域,能与Qt相抗衡的只有 MFC.MFC是微软公司的基础类库,自然得天独厚,比如开发深层次的Windows应用远超Qt,但Qt也有杀手钢,那就是跨平台,这两点大家一日了然,下面我们再来比较一下它们的其他特点。(1)开发速度就整体而言.MFC可能会快捷一些,因为Windows平台的开发工具大多很智能,因为立足于Windows的开发人群很广,从菜鸟到专业人士(开发人员一多,技术参考就多,周围可以咨询问题的人就多)。相比较而言,Qt基于Linux可用的开发工具不多,而且这些工具大都比较专业。多是第三方的产品,加上这些工具的集成度不高,支持的第三方库也没有支持MFC的第三方库多,因而从这一点看 MFC 略胜一筹。不过,Qt 自从被诺基亚公司收购后。官方发布了跨平台集成开发环境 Qt Creator,之后的走向就不好说,总体感觉就是 Qt Creator和VS差距比较大,还需要改进,从库本身来说,Qt集成的功能比MFC庞大,而且使用的封装技术(信号/槽)倍受赞许。比如 Qt Script 为Qt提供了嵌入式脚本, Qt 界面库支持 CSS. 所以 Qt 构建出来的界面比MFC要好,且实现过程也比较容易.为了降低使用Windows SDK开发的难度以及提高使用WindowsSDK开发的效率,MFC采用的是浅层封装(最新的2008 spl加入了BCG的高级界面库,可能有所改善) Windows SDK.这个方面相比而言,Qt库比MFC优秀.不过.这两个库久经号验,稳定性都很高,几乎没有什么Bug.(2)运行效率MFC采用浅层封装,运行效率比较高,加上VC对Windows进行了针对性的优化,因而整体性能是比较高的,但是如果加入第三方库就不敢保证整体的高性能了.Qt库比较境大封装层次较深,所以运行效率比MFC低,不过在如今主流计算机系统的配置下人们不太会介意这点性能差别了.(3)应用范围如今Windows的普及率无人能及,MFC的使用人数自然较多,相比而言.Qt主要是Linus下的开发人员在使用.MFC不支持嵌入式开发(主要是指手机平台);而Qt有对应的支持模块,虽然被Java 碾压,但是还有使用空间。(4)学习难度Qt的封装方式比较明晰,和系统隔离得比较好,学习门槛不高.MFC权难精透,因为深入开发之后还需要了解SDK,否则开发出的程序比较初级。 (5)伪对象 vs 真对象归根结底,Qt 和 MFC 的差异在于其设计的差异。MFC 的根本目的是让开发者调用封装好的、用 C 语言编写的 Windows API.但是,这绝非好的面向对象的程序设计模式,因为在很多场合,我们必须提供一个包含15个结构成员的C语言的struct(结构类型),但是其中只有一个结构成员是我们需要使用的,或者必须用在调用函数中使用参数的方式来获得我们需要的结构成员。MFC还有许多让人摸不着头脑的地方,比如函数名就没有任何连续性,假设要创建一个 graphical类,直到调用creat()以后才会被创建:对于dialogs类,必须要等到调用OninitDialog()才能创建实例对象,奇怪的是到了views,创建该类的函数名竟然成了OnlnitUpdate().使用VC/MFC中的库函数调用总是要十分小心,不如Qt可以顾名思义.(6)消息循环MFC是事件驱动的架构,必须对任何操作对应的特定消息做出响应。Windows中应用程序发送的信息数以千计,遗憾的是要厘清这些纷繁芜杂的消息很困难,通过参考这方面的文档资料并不能很好地解决这些问题。Qt的消息机制建立在SIGNALO发送和SLOTO接收的基础上。这个机制是对象间建立联系的核心机制。利用SIGNALO可以传递任何参数,它的功能非常强大,可以直接传递信号给SLOTO,因此可以清楚地理解要发生的事情,一个类所发送的信号数量通常非常少(4个或者5个),相关的帮助文档资料也非常齐全,这会让我们觉得一切尽在掌握之中,信号/槽机制类似于Java中的listener机制,不过这种机制更加轻量级,功能更齐全。(7)创建界面MFC无法创建大小动态可变的子窗口,必须重新手动修改代码来改变窗口的位置(这恰好解释了为什么Windows里的对话框dialog是不可以改变的),这个问题在软件进行多语言化版本设计时更加严重,因为许多国家或地区在表达相同意思时可能需要更长的词汇和句子,软件开发者必须对每种语言的版本重新修改软件在Qt 中,界面需要的任何设计都可以手动编写出来,因为它很简单:为了得到一个按错(button),可以将代码写为"button-new PushButton( “buttonName”, MyParentName );“,如果想在按下某个按钮以后调用某段执行代码,则可以编写为“connect(button,SIGNAL(clicked))qApp,SLOT(action))):”.Qt拥有非常简单而又不失强大的设计机制,不使用它实在可惜.Qt还提供了一个图形用户工具—Ot_Designer,可以让我们完成许多在 MFC
    中不可能完成的任务,比如用预先填好的内容生成列表视图(listview),在每个页签(tab)上使用不同的视图(view),Qt Designer生成的代码可阅读、可理解,单独放在一个文件中。在编程的同时,我们可以随心所欲地多次重新生成用户界面,而不用将控件拖放到设计严格限定的位置,因为可以通过设计机制更完美地组织这些控件。(8)帮助文档用户选择图形开发环境的时候,帮助文档是否周全是左右用户选择图形开发环境的重要因素.Visual开发环境的帮助文档MSDN (需要单独购买)非常庞大,有10个 CD-ROM之大.(5)伪对象 vs 真对象归根结底,Qt 和 MFC的差异在于其设计的差异。MFC 的根本目的是让开发者调用封装好的、用 C 语言编写的 Windows API.但是,这绝非好的面向对象的程序设计模式,因为在很多场合,我们必须提供一个包含15个结构成员的C语言的struct (结构类型),但是其中只有一个结构成员是我们需要使用的,或者必须用在调用函数中使用参数的方式来获得我们需要的结构成员。MFC还有许多让人摸不着头脑的地方,比如函数名就没有任何连续性,假设要创建一个 graphical类,直到调用creat()以后才会被创建:对于dialogs类,必须要等到调用OninitDialog()才能创建实例对象,奇怪的是到了views,创建该类的函数名竟然成了OnlnitUpdate().使用VC/MFC中的库函数调用总是要十分小心,不如Qt可以顾名思义.(6)消息循环MFC是事件驱动的架构,必须对任何操作对应的特定消息做出响应。Windows中应用程序发送的信息数以千计,遗憾的是要厘清这些纷繁芜杂的消息很困难,通过参考这方面的文档资料并不能很好地解决这些问题。Qt的消息机制建立在SIGNALO发送和SLOTO接收的基础上。这个机制是对象间建立联系的核心机制。利用SIGNALO可以传递任何参数,它的功能非常强大,可以直接传递信号给SLOTO,因此可以清楚地理解要发生的事情,一个类所发送的信号数量通常非常少(4个或者5个),相关的帮助文档资料也非常齐全,这会让我们觉得一切尽在掌握之中,信号/槽机制类似于Java中的listener机制,不过这种机制更加轻量级,功能更齐全。(7)创建界面MFC无法创建大小动态可变的子窗口,必须重新手动修改代码来改变窗口的位置(这恰好解释了为什么Windows里的对话框dialog是不可以改变的),这个问题在软件进行多语言化版本设计时更加严重,因为许多国家或地区在表达相同意思时可能需要更长的词汇和句子,软件开发者必须对每种语言的版本重新修改软件在 Qt 中,界面需要的任何设计都可以手动编写出来,因为它很简单:为了得到一个按错(button),可以将代码写为"button-new PushButton( “buttonName”, MyParentName);“,如果想在按下某个按钮以后调用某段执行代码,则可以编写为“connect(button,SIGNAL(clicked))qApp,SLOT(action))):”.Qt拥有非常简单而又不失强大的设计机制,不使用它实在可惜.Qt还提供了一个图形用户工具—Ot_Designer,可以让我们完成许多在 MFC
    中不可能完成的任务,比如用预先填好的内容生成列表视图(listview),在每个页签(tab)上使用不同的视图(view),QtDesigner 生成的代码可阅读、可理解,单独放在一个文件中。在编程的同时,我们可以随心所欲地多次重新生成用户界面,而不用将控件拖放到设计严格限定的位置,因为可以通过设计机制更完美地组织这些控件。(8)帮助文档用户选择图形开发环境的时候,帮助文档是否周全是左右用户选择图形开发环境的重要因素.Visual开发环境的帮助文档MSDN(需要单独购买)非常庞大,有10个 CD-ROM之大. 涵盖内容广泛,但难免有泥沙俱下、主题模糊、关键信息不突出的遗憾.MSDN的链接设计也很糟糕,通过链接很难从一个类跳转到它的父类、子类或者相关的类,例如,搜索一个关键字,不管是否直接关联,只要包含这个关键字的信息统统都会搜索出来。Qt 的文档设计得相当优秀,可以到 https://doc.qt.io/上一睹芳容。Qt 的文档完备且详细地覆盖了Qt的方方面而,然而文档的整体容量竟然仅有18MB.其中每一个类和方法都被详尽描述,巨细靡遗,举例充实。通过Trolltech公司提供的链接或者是QtAssistant工具可以方便地从一个类或者方法跳转到其他的类。文档还包含了一个初学者教程和一些典型应用的例子,同时还提供了FAQ 和邮件列表,方便用户通过用户群或 Internet来查阅.如果购买了授权.在一天之内就会得到Trolltech公司的技术支持。实际上,Qt优秀的帮助文档使得寻求外部帮助的机会大大减少,Trolltech公司的宗旨之一是:有如此优秀的Qt产品及其帮助文档,其他外部的技术支持就是多余的。总之,MSDN用熟了也很好用、很全面,相关的背景知识、例子都能找到,而且网上还有丰富的范例程序可以参考。同样地,仅凭Qt的帮助文档不足以解决所有问题。(9) Unicode 编码使用 MFC,如果要显示 Unicode 编码的字符,在编译链接时就必须用到特殊的参数(还要改变可执行文件执行的入口),必须在每个 string 前面加上T. 将 char修改成 TCHAR,每个字符串处理函数(strepy(), strdup(),streat()等)都要改变成其他的字符串处理函数名。更令人恼火的是,支持Unicode的软件竟然不能和不支持Unicode编码的DLL一起工作,这是一个很严重的问题,但是我们别无选择。使用Qt.字符串用 QString 类来处理,QString 类与生俱来就采用 Unicode编码,因而不需要改变任何东西:不需要在编译/链接时增添参数,不需要修改代码,只需要使用QString类即可.QString类功能强大、应用广泛,也不用担心Unicode问题.QString类提供了转换为char和UTF8的函数。MFC的CString类设计相比于Qt的QString类设计有着巨大的不同.CString类以char为基础提供的功能很少,它的特点是当需要char 类型时可以直接使用CString 类.乍看起来这好像是优点,实质上有很大缺陷,特别是可以直接修改 char “内容而不用更新类,在转变为 Unicode时会遭遇到很大的麻烦(CString 类随编译选项可以是Unicode版),相反,QString类在内部以Unicode编码方式来存储字符串,需要时提供char功能,实际上很少用到char,因为整个Qt的API用文本的方式响应QString参数.QString还附带了许多其他的功能,比如自动分享QString 的内容。总之 QString 是一个非常强大的类,需要用到它的地方很多。(10)支持软件的多语种功能MFC可以支持软件的多语种功能,需要将每一个语种的字符申放在一个字符串表中,在代码中需要之处调用LoadString(IDENTIFIET),然后把这些字符串资源转化到DLL中,这些字符串对应到所需要的语言,改变图形界面,再通过程序调用这个DLL。整个过程非常烦琐,可谓牵一发而动全身。Qt,只需要将字符串置于函数 tr0中,可以直接在代码中改变字符串的引用. QtLinguist(Qt的一个工具)能够提取所有待翻译的字符串并按照对应语涵盖内容广泛,但难免有泥沙俱下、主题模糊、关键信息不突出的遗憾.MSDN的链接设计也很糟糕,通过链接很难从一个类跳转到它的父类、子类或者相关的类,例如,搜索一个关键字,不管是否直接关联,只要包含这个关键字的信息统统都会搜索出来。Qt的文档设计得相当优秀,可以到 https://doc.qt.io/上一睹芳容。Q t的文档完备且详细地覆盖了Qt的方方面而,然而文档的整体容量竟然仅有18MB.其中每一个类和方法都被详尽描述,巨细靡遗,举例充实。通过Trolltech公司提供的链接或者是Qt Assistant工具可以方便地从一个类或者方法跳转到其他的类。文档还包含了一个初学者教程和一些典型应用的例子,同时还提供了FAQ和邮件列表,方便用户通过用户群或 Internet来查阅.如果购买了授权.在一天之内就会得到Trolltech公司的技术支持。实际上,Qt优秀的帮助文档使得寻求外部帮助的机会大大减少, Trolltech公司的宗旨之一是:有如此优秀的Qt产品及其帮助文档,其他外部的技术支持就是多余的。总之,MSDN用熟了也很好用、很全面,相关的背景知识、例子都能找到,而且网上还有丰富的范例程序可以参考。同样地,仅凭Qt的帮助文档不足以解决所有问题。(9) Unicode 编码使用 MFC,如果要显示 Unicode编码的字符,在编译链接时就必须用到特殊的参数(还要改变可执行文件执行的入口),必须在每个 string 前面加上T. 将 char 修改成 TCHAR,每个字符串处理函数(strepy(), strdup(),streat()等)都要改变成其他的字符串处理函数名。更令人恼火的是,支持Unicode的软件竟然不能和不支持Unicode编码的DLL一起工作,这是一个很严重的问题,但是我们别无选择。使用 Qt.字符串用 QString 类来处理,QString 类与生俱来就采用 Unicode编码,因而不需要改变任何东西:不需要在编译/链接时增添参数,不需要修改代码,只需要使用QString类即可.QString类功能强大、应用广泛,也不用担心Unicode问题.QString类提供了转换为char和UTF8的函数。MFC的CString类设计相比于Qt的QString类设计有着巨大的不同.CString类以char为基础提供的功能很少,它的特点是当需要char 类型时可以直接使用CString 类.乍看起来这好像是优点,实质上有很大缺陷,特别是可以直接修改 char “内容而不用更新类,在转变为 Unicode时会遭遇到很大的麻烦(CString 类随编译选项可以是Unicode版),相反,QString类在内部以Unicode编码方式来存储字符串,需要时提供char功能,实际上很少用到char*,因为整个Qt的API用文本的方式响应QString参数.QString还附带了许多其他的功能,比如自动分享QString 的内容。总之 QString 是一个非常强大的类,需要用到它的地方很多。(10)支持软件的多语种功能MFC可以支持软件的多语种功能,需要将每一个语种的字符申放在一个字符串表中,在代码中需要之处调用LoadString(IDENTIFIET),然后把这些字符串资源转化到DLL中,这些字符串对应到所需要的语言,改变图形界面,再通过程序调用这个DLL。整个过程非常烦琐,可谓牵一发而动全身。Qt支持软件多语种的方式有所不同,只需要将字符串置于函数 tr0中,可以直接在代码中改变字符串的引用. QtLinguist (Qt的一个工具)能够提取所有待翻译的字符串并按照对应语种的用户界面显示出来.目常适合进行用户界面的多语种翻译。它的功能齐全,可以通过查询字典数据显示出对应语种的字符串内容,正确显示出Unicode编码,以快捷方式检测出未翻的字符串,检测字符串修改的情况等,这个工具其至可以提供给没有任何编段经验的翻译人负用于翻译软件的用户界面。连软件的发布遵循GPI.版权规则,可以由开发者根据具体的开复需求来修改,翻译之后的文档保存在XML中,符介软件复用的原则。由此可见,为软件增加一种新的语言版本仅仅是用Qt Linguist1.其牛成一个新的文件而已。(11)资源问题使用 MFC 时,一部分开发过程要依喜“资源”(Resource),在很多的案例中开发者想必须使用它们,这样会导致如下后果:除了Visual Studio,很难使用其他的工具来完成开发资源编辑器仅有有限的功能,比如通过 Dialog编辑器不能改变所有的属性。Q 并没有资源的概念,解决了 MFC 所遇到的问题。Qt提供了一个界面设计器,以可可化的方式来设计界面,并把设计后生成的代码存储到一个脚本文件中。(12)价格用户一旦购买了Visual Studio.就将免费获得MFC SDK. Qt在UNIX上可以免费获得港守 GPL 版权规则的版本,现在也可以免费获得 Windows 平台上的 GPL 版本,如果 要开发不公开源代码的软件,则必须购买Qt的授权。在特定平台下,每个开发者都可购买一个水久也授权,并可获得一年的技术支持。(13)发布在发布基于 MFC 的软件时,必须依靠存储在客户计算机上的 MFC.但是这是不安全的同样是 MFC42.dll.基于相同的库可得到 3 个不同的版本。因而需要检查是否拥有正确MFC42.dll版本,如果版本不对,就升级它,但是,升级MFC42.dll 会改变很多软件的行为这让开发者感觉很不好,如果在安装软件以后导致用户的计算机死机了,该怎么办呢?Qt 没有这个风险,因为 Qt 压根就没有“升级整个系统”的概念.不过,开发的软件若是基于同一个版本的Qt来运行的,则会有潜在的问题。种的用户界面显示出来.目常适合进行用户界面的多语种翻译。它的功能齐全,可以通过查询字典数据显示出对应语种的字符串内容,正确显示出Unicode编码,以快捷方式检测出未翻的字符串,检测字符串修改的情况等,这个工具其至可以提供给没有任何编段经验的翻译人负用于翻译软件的用户界面。连软件的发布遵循GPI.版权规则,可以由开发者根据具体的开复需求来修改,翻译之后的文档保存在XML中,符介软件复用的原则。由此可见,为软件增加一种新的语言版本仅仅是用Qt Linguist1.其牛成一个新的文件而已。(11)资源问题使用 MFC 时,一部分开发过程要依喜“资源”(Resource),在很多的案例中开发者想必须使用它们,这样会导致如下后果:除了Visual Studio,很难使用其他的工具来完成开发资源编辑器仅有有限的功能,比如通过 Dialog编辑器不能改变所有的属性。Q 并没有资源的概念,解决了 MFC 所遇到的问题。Qt提供了一个界面设计器,以可可化的方式来设计界面,并把设计后生成的代码存储到一个脚本文件中。(12)价格用户一旦购买了Visual Studio.就将免费获得MFC SDK. Qt在UNIX上可以免费获得港守 GPL 版权规则的版本,现在也可以免费获得 Windows 平台上的 GPL 版本,如果 要开发不公开源代码的软件,则必须购买Qt的授权。在特定平台下,每个开发者都可购买一个水久也授权,并可获得一年的技术支持。(13)发布在发布基于 MFC 的软件时,必须依靠存储在客户计算机上的 MFC.但是这是不安全的同样是 MFC42.dll.基于相同的库可得到 3 个不同的版本。因而需要检查是否拥有正确MFC42.dll版本,如果版本不对,就升级它,但是,升级MFC42.dll 会改变很多软件的行为这让开发者感觉很不好,如果在安装软件以后导致用户的计算机死机了,该怎么办呢?Qt 没有这个风险,因为 Qt 压根就没有“升级整个系统”的概念.不过,开发的软件若是基于同一个版本的Qt来运行的,则会有潜在的问题。
  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

行者..................

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值