2023年6月21日发(作者:)
说明丗按照电子工业出版社的要求丆书籍《Qt中的C++技术》阐述了如何在Visual Studio 2010上安装、编译Qt。一些用户仍然喜欢使用Visual Studio2008•C因此丆本文档阐述了如何在该平台上安装、编译Qt 4.7.1。作者丗南开大学软件学院丆张波丆2012-9-11。在保留此说明的前提下丆本文档可被自由传播。2.3 Qt库的编译 开发工具的选择。虽然目前支持Qt开发的工具较多,比如跨平台的Qt Creator,QDevelop,Eclipse等,但是在Windows平台上,经过笔者的评测,微软的Visual Studio仍然是最优选择。为了支持开发者使用Visual Studio开发Qt应用程序,Qt提供了一个插件“Visual Studio Add‐in”。安装、执行该插件后,开发者在Visual Studio中能方便地创建Qt应用程序的项目文件(扩展名为“.vcproj”),也能把Qt项目文件(扩展名为“.pro”)转换为Visual Studio的项目文件。 在最近的Windows版本(比如Windows Vista,Windows 7)上安装Visual Studio 6.0时会遇到一些问题。为了回避这些问题,本书采用了Visual Studio 2008(以下简称为VS 2008)。 Qt版本的选择。截至本书截稿时,Qt库仍处于不断地改良、更新过程中,读者可从其官方网站下载最新版本的Qt库。本书采用的是2010年5月发布的Qt 4.7.1。由于Qt的各个版本会有细微的差别,可能导致本书中的某些例子无法和更高版本的Qt库链接,因此,我们建议读者使用Qt 4.7.1。为了方便读者,该版本的安装文件被刻录在本书配套光盘Z:projectsqt目录下。 Qt软件包的安装。老版本的Qt没有直接提供在VS 2008环境下编程所需要的库文件,需要用户使用VS 2008重新编译Qt的源代码以生成所需要的库文件。这个过程不但费时,而且可能出错。而Qt 4.7.1版本则直接提供了库文件,简化了安装过程。我们可以按照以下步骤配置Qt的开发环境。 1. 安装VS 2008,比如到默认的C:Program FilesMicrosoft Visual Studio 9.0目录下。 2. 获取并安装Qt软件包。截止到2011年2月22日,Windows平台上最新版的Qt软件包为2010年5月发布的qt‐sdk‐win‐opensource‐,其中Qt库的版本为4.7.1。读者可以从Qt的官方网站下载该软件包。为了方便读者,该软件包被刻录在随书光盘projectsqt目录下,读者可以直接双击运行。该软件包运行时需要用户输入目标路径。本书设该路径为d:qt4.7.1。 安装完毕后,Qt 4.7.1的库文件存放在D:qt4.7.1lib目录下,头文件存放在D:qt4.7.1include目录下,可执行程序(比如Qt Assistant)以及动态链接库(扩展名为DLL)存放在D:qt4.7.1bin目录下。Qt 4.7.1的库文件可以供VS 2008的C++程序直接使用,没有必要像老版本那样需要使用VS 2008的编译器对Qt的源代码重新进行编译。因此,进行到这个步骤,我们可以直接在VS 2008中编写Qt应用程序了。当然,为了能够更方便地在VS 2008中开发Qt应用程序,我们也可以使用2.4节介绍工具Qt Visual Studio Add‐in。 由于Qt 4.7.1软件包已经包含了VS 2008编译生成的库文件,一般情况下我们不需要重新编译Qt源代码。然而,在某些场合下我们需要重新编译Qt库。例如本书8.3节在讨论Qt应用程序的二进制代码兼容问题时就需要重新编译Qt库。这是一项耗时的工作,以下是具体的步骤。 3. 复制Qt软件包。本书8.3节会本着试验的目的修改Qt的源代码。完成试验后我们应该复原Qt的源代码。Qt 4.7.1的所有文件都存放在目录d:qt4.7.1下。为了能够精确复原Qt的源代码,我们令该目录为原始目录,不会对其进行任何修改。做实验时,该目录下的内容会被复制到一个工作目录,本书设为D:qtvc,其中的内容可以被修改。当我们想复原Qt源代码时,只需要将原始目录中的文件复制到工作目录即可。由于原始目录中含有大约3.6万个文件,这个复制操作需要运行一段时间。我们可以使用Windows的资源管理器来完成这个复制操作,也可以使用命令 xcopy d:qt4.7.1 d:qtvc /s 的方式来完成,这种方式可以显示复制的过程。 4. 配置适用于VS 2008的环境变量。对Qt软件包进行编译时需要以命令行方式使用VS 2008的编译器,这需要配置一些环境变量。用一个文本编辑软件打开文件C:Program FilesMicrosoft Visual Studio ,使环境变量PATH包含d:qtvc,INCLUDE包含d:qtvcinclude,LIB包含d:qtvclib。保存该批处理文件后,在命令行窗口运行该批处理文件。随书光盘是一个修改后的文件,读者可以参考该文件进行修改。读者也可以直接运行该文件,跳过以上编辑过程。为了验证是否对上述环境变量做了正确的设置,可以在命令行窗口运行set命令,并检查屏幕的输出。 5. 生成供VS 2008编译器使用的配置文件。在命令行窗口中,将当前目录切换到d:qtvc,运行 configure ‐platform win32‐msvc2008 这个命令将生成一个配置文件,供步骤6中的编译程序nmake使用。Qt库由corelib,GUI,network等多个模块组成,上述命令表示即将编译所有模块。如果开发者只需要使用部分模块,可以使用下面的命令略过其他模块的编译,以节省编译时间: configure ‐no‐sql‐sqlite ‐no‐qt3support ‐platform win32‐msvc2008 ‐no‐libtiff ‐no‐dbus ‐no‐phonon ‐no‐phonon‐backend ‐no‐webkit 该命令表示不编译sql‐sqlite, qt3support, libtiff, dbus, phonon, phonon‐backend及webkit模块。configure命令运行时会询问Qt的版本是商业版还是免费开源版,选择免费开源版。该命令大约运行10分钟。 6. 运行nmake进行编译。在命令行窗口中,将当前目录切换到d:qtvc,运行命令nmake,对Qt的源代码进行编译。该命令大约运行2~3个小时。为了验证Qt库是否已经被正确编译,用户可以查看目录D:qtvclib。如果该目录包含,等库文件,而且这些库文件的更新时间正好为运行nmake命令的时间,则表示Qt库已被成功编译。编译完毕后d:qtvc目录占用了大约10G的空间,其中大部分是.obj文件。用户可以在该目录下运行命令“del *.obj /s”删除这些文件,以节省磁盘空间。缩减后的目录大约占用2.6G空间。 2.4 开发环境的设置 在VS 2008中开发Qt应用程序需要做以下设置。 指定Qt库的头文件位置以及库文件。Qt应用程序通常以相对路径而不是绝对路径的方式包含Qt库的头文件,比如使用“#include ”而不是使用“#include ”。当编译器看到这个预处理命令时,需要知道去哪个目录寻找所包含的头文件,这需要运行VS 2008的菜单项Visual Studio ToolsOptionsProjects and SolutionsVC++ Directories。在对话框的“show directories for”部分,我们选择“Include files”以添加Qt头文件所在的目录。如果读者计划使用Qt 4.7.1本身的库,这些头文件、库文件位于d:qt4.7.1目录下。如果读者计划使用自己编译的Qt库,这些头文件、库文件位于d:qtvc目录下。下面我们以后者为例进行介绍。 对于本书,设我们已经按照1.4节所述将目录“d:qtvc”映射为盘符“q:”,则所有Qt的头文件都存放在q:include的某一个子目录下。如果我们只是将目录q:include添加到“Include files”部分,Qt应用程序就需要使用诸如#include 的形式来包含子目录QtGui下的头文件QColor.h。一种更简单的“Include files”部分。这样,Qt应用程序就可以直接使用诸如#include 做法是将目录q:includeQtGui也添加到的形式来包含子目录下的文件。由于大多数Qt应用程序都会用到子目录QtCore以及QtGui下的头文件,所以我们建议将这两个子目录(即q:includeQtCore,q:includeQtGui)以及q:include添加到“Include files”部分。 Qt提供了一些例子和演示程序,这些程序被存放在Qt安装目录的examples和demos子目录下。这些程序的VS 2008项目文件以相对路径的方式(比如“....include”)来指定Qt头文件的所在位置。如果读者将它们复制到文件系统其它位置进行修改和编译,这些相对路径失效,导致VS 2008编译这些程序时出错。此时应该以绝对路径的方式将这些程序所依赖的头文件添加到“Include files”部分。 Qt应用程序必定会调用Qt库文件中的函数,VS 2008链接器需要知道该程序应该和哪些库文件链接。用户应该首先运行VS 2008的菜单项Visual Studio ToolsOptionsProjects and SolutionsVC++ Directories。在对,添加Qt库文件所在的目录d:qtvclib。然后,话框的“show directories for”部分,我们选择“Library files”在VS 2008中执行菜单ProjectPropertiesConfiguration PropertiesLinkerInputAdditional Dependencies,在编辑框中输入该程序用到的Qt库文件。如果该程序只用到QtCore以及QtGui模块,应该在编辑框中输入“ ”。 由于Qt应用程序在运行的时候需要使用d:qtvcbin目录下的动态链接库(DLL文件),所以用户应该将该目录加入到Windows系统的环境变量PATH中。具体地说,执行显示桌面我的电脑右键属性高级环境变量系统变量PATH,在其末尾加上d:qtvcbin。 如果用户没有执行这个操作,可能出现的错误情形为:用户能够在VS2008环境中执行一个Qt应用程序(因为下文的Qt Visual Studio Add‐in会做以上设置),而在命令行窗口中无法执行该Qt应用程序(因为它找不到DLL文件)。 安装插件Qt Visual Studio Add‐in。为了便于在VS 2008环境下使用Qt库,可以从以下地址下载、安装为了方便读者,插件Qt Visual Studio Add‐in:/downloads/visual‐studio‐add‐in‐beta。随书光盘含有该软件,存放为 projectsqtqt‐vs‐addin‐。安装过程中选用默认安装参数即可。安装完毕后,运行VS 2008,会有一个名为Qt的菜单项。执行Qt OptionsQt VersionsAdd,在Version Name域输入任意名字比如vc,在Path域中输入d:qtvc。至此,该Qt插件已经和VS无缝集成在一起了。 该插件需要.NET Framework 3.5 SP1。否则,执行菜单命令QtLaunch Designer时,会出现“Method not found …”的提示,导致无法使用Qt Designer来快速设计对话框等屏幕控件。如果出现这个问题,解决方法如下。 1. 卸载Qt Visual Studio Add‐in。 2. 卸载Windows操作系统此前安装的.NET Framework。可以从网上下载并使用一个工具软件“dotnet framework cleanup tool”进行卸载。为了方便读者,随书光盘含有该软件,存放为projectsqt dotnetfx_cleanup_。该步骤需要10分钟左右,用户可以点击其View Log按钮察看工作过程。 3. 下载、安装.NET Framework 3.5 SP1。为方便读者,随书光盘含有该软件,存放为 projectsqt 。该步骤需要20分钟左右。在开始阶段需要用户的计算机和互联网相连。安装完毕后,重新启动机器。用资源管理器打开目录%systemroot%mework。如果其中含有一个子目录v3.5,则表明安装成功。 4. 重新安装Qt Visual Studio Add‐in。 编写测试程序。安装完毕Qt Visual Studio Add‐in,我们可以尝试在VS 2008环境下编写一个小测试程序。运行FileNewProject,在弹出的对话框中选择Qt4 Projects。有多种项目类型可供选择,本书仅涉及其中两个:(1)Qt Concole Application,即主控台程序。这种类型的程序不使用Qt GUI模块的任何类或者函数,运行时没有图形界面,只有一个能够显示文字的窗口,允许用户通过键盘输入一些信息,程序将运行结果以文字形式显示在该窗口中。该窗口通常被称为命令行窗口。(2)Qt Application,即一般的图形界面程序。这种类型的程序使用Qt GUI模块的函数,显示一个具有图形界面的窗口。以上两种类型相互排斥,不要试图创建一个即具有命令行窗口又具有图形界面窗口的程序。如果一个程序使用了Qt GUI模块的任何类或者函数,就只能创建图形界面程序。2.5节将介绍如何创建主控台程序,本节仅介绍如何创建图形界面程序。 在Name域输入hello,在Location域输入一个目录名,以存放Qt插件自动生成的源文件、头文件。点击OK按钮后会启动一个创建项目的向导,其中有一页罗列了Qt的多个软件模块,供程序员选择,以和应用程序链接。我们暂时选择默认配置即可。项目创建完毕后,运行BuildBuild Solution对项目进行编译。成功后,执行DebugDebug Without Debugging,一个标题为“hello”的空白窗口弹出,表明该应用程序运行成功。下面我们来看看Qt是如何实现这个简单程序的。 从VS 2008的Solution Explore中可以看到Qt插件为我们创建了源文件(source files),,头文件(header files)hello.h,资源文件(resource files),以及若干生成文件(generated files)。目前,我们不必弄清楚每个文件、每一行的含义,我们只关心其中部分内容。hello.h的主要内容如下。 #include ① #include "ui_hello.h" ② class hello : public QMainWindow { Q_OBJECT public: hello(QWidget *parent = 0, Qt::WFlags flags = 0); ~hello(); private: Ui::helloClass ui; }; 由于该头文件使用了类QMainWindow,所以行①包含了头文件QMainWindow。Qt的每个类均对应着一个与该类同名的头文件。Qt的每个模块有一个汇总的头文件,使用include语句包含了与该模块中每个类对应的头文件。例如,Q:includeQtGui目录下的头文件QtGui用include语句包含了QtGui模块几百个类对应的头文件。一个源程序如果包含了这个汇总头文件,它就间接地包含了这个模块的所有头文件,程序员不必再写一大堆的include语句。但是,如果一个模块的头文件太多,这个做法会增加编译时间。如果一个源文件中所涉及的Qt类的数量不多,我们应该仅包含和这些类对应的头文件,以缩减编译时间。 行②从类QMainWindow派生新类hello。类QMainWindow实现了一个应用程序主窗口的功能。它能够在操作系统的图形环境中显示自己,接收鼠标、键盘等消息进行处理。菜单、滚动条等部件常常作为子对象,被添加到该类的对象中。 用户在声明类hello时用到了宏Q_OBJECT,应该将声明该类的头文件hello.h加入到VS 2008项目的“Header Files”部分,否则将产生编译错误,具体原因我们将在17.2中阐述。 项目中的内容如下。 #include "hello.h" #include int main(int argc, char *argv[]) { } QApplication a(argc, argv); hello w; (); return (); ③ ④ ⑤ ⑥ 行③定义了一个QApplication对象,用于管理程序命令行等信息。行④定义一个hello对象,行⑤显示该对象。行⑥启动Qt的事件处理机制,处理用户的鼠标输入、键盘输入等事件。
2023年6月21日发(作者:)
说明丗按照电子工业出版社的要求丆书籍《Qt中的C++技术》阐述了如何在Visual Studio 2010上安装、编译Qt。一些用户仍然喜欢使用Visual Studio2008•C因此丆本文档阐述了如何在该平台上安装、编译Qt 4.7.1。作者丗南开大学软件学院丆张波丆2012-9-11。在保留此说明的前提下丆本文档可被自由传播。2.3 Qt库的编译 开发工具的选择。虽然目前支持Qt开发的工具较多,比如跨平台的Qt Creator,QDevelop,Eclipse等,但是在Windows平台上,经过笔者的评测,微软的Visual Studio仍然是最优选择。为了支持开发者使用Visual Studio开发Qt应用程序,Qt提供了一个插件“Visual Studio Add‐in”。安装、执行该插件后,开发者在Visual Studio中能方便地创建Qt应用程序的项目文件(扩展名为“.vcproj”),也能把Qt项目文件(扩展名为“.pro”)转换为Visual Studio的项目文件。 在最近的Windows版本(比如Windows Vista,Windows 7)上安装Visual Studio 6.0时会遇到一些问题。为了回避这些问题,本书采用了Visual Studio 2008(以下简称为VS 2008)。 Qt版本的选择。截至本书截稿时,Qt库仍处于不断地改良、更新过程中,读者可从其官方网站下载最新版本的Qt库。本书采用的是2010年5月发布的Qt 4.7.1。由于Qt的各个版本会有细微的差别,可能导致本书中的某些例子无法和更高版本的Qt库链接,因此,我们建议读者使用Qt 4.7.1。为了方便读者,该版本的安装文件被刻录在本书配套光盘Z:projectsqt目录下。 Qt软件包的安装。老版本的Qt没有直接提供在VS 2008环境下编程所需要的库文件,需要用户使用VS 2008重新编译Qt的源代码以生成所需要的库文件。这个过程不但费时,而且可能出错。而Qt 4.7.1版本则直接提供了库文件,简化了安装过程。我们可以按照以下步骤配置Qt的开发环境。 1. 安装VS 2008,比如到默认的C:Program FilesMicrosoft Visual Studio 9.0目录下。 2. 获取并安装Qt软件包。截止到2011年2月22日,Windows平台上最新版的Qt软件包为2010年5月发布的qt‐sdk‐win‐opensource‐,其中Qt库的版本为4.7.1。读者可以从Qt的官方网站下载该软件包。为了方便读者,该软件包被刻录在随书光盘projectsqt目录下,读者可以直接双击运行。该软件包运行时需要用户输入目标路径。本书设该路径为d:qt4.7.1。 安装完毕后,Qt 4.7.1的库文件存放在D:qt4.7.1lib目录下,头文件存放在D:qt4.7.1include目录下,可执行程序(比如Qt Assistant)以及动态链接库(扩展名为DLL)存放在D:qt4.7.1bin目录下。Qt 4.7.1的库文件可以供VS 2008的C++程序直接使用,没有必要像老版本那样需要使用VS 2008的编译器对Qt的源代码重新进行编译。因此,进行到这个步骤,我们可以直接在VS 2008中编写Qt应用程序了。当然,为了能够更方便地在VS 2008中开发Qt应用程序,我们也可以使用2.4节介绍工具Qt Visual Studio Add‐in。 由于Qt 4.7.1软件包已经包含了VS 2008编译生成的库文件,一般情况下我们不需要重新编译Qt源代码。然而,在某些场合下我们需要重新编译Qt库。例如本书8.3节在讨论Qt应用程序的二进制代码兼容问题时就需要重新编译Qt库。这是一项耗时的工作,以下是具体的步骤。 3. 复制Qt软件包。本书8.3节会本着试验的目的修改Qt的源代码。完成试验后我们应该复原Qt的源代码。Qt 4.7.1的所有文件都存放在目录d:qt4.7.1下。为了能够精确复原Qt的源代码,我们令该目录为原始目录,不会对其进行任何修改。做实验时,该目录下的内容会被复制到一个工作目录,本书设为D:qtvc,其中的内容可以被修改。当我们想复原Qt源代码时,只需要将原始目录中的文件复制到工作目录即可。由于原始目录中含有大约3.6万个文件,这个复制操作需要运行一段时间。我们可以使用Windows的资源管理器来完成这个复制操作,也可以使用命令 xcopy d:qt4.7.1 d:qtvc /s 的方式来完成,这种方式可以显示复制的过程。 4. 配置适用于VS 2008的环境变量。对Qt软件包进行编译时需要以命令行方式使用VS 2008的编译器,这需要配置一些环境变量。用一个文本编辑软件打开文件C:Program FilesMicrosoft Visual Studio ,使环境变量PATH包含d:qtvc,INCLUDE包含d:qtvcinclude,LIB包含d:qtvclib。保存该批处理文件后,在命令行窗口运行该批处理文件。随书光盘是一个修改后的文件,读者可以参考该文件进行修改。读者也可以直接运行该文件,跳过以上编辑过程。为了验证是否对上述环境变量做了正确的设置,可以在命令行窗口运行set命令,并检查屏幕的输出。 5. 生成供VS 2008编译器使用的配置文件。在命令行窗口中,将当前目录切换到d:qtvc,运行 configure ‐platform win32‐msvc2008 这个命令将生成一个配置文件,供步骤6中的编译程序nmake使用。Qt库由corelib,GUI,network等多个模块组成,上述命令表示即将编译所有模块。如果开发者只需要使用部分模块,可以使用下面的命令略过其他模块的编译,以节省编译时间: configure ‐no‐sql‐sqlite ‐no‐qt3support ‐platform win32‐msvc2008 ‐no‐libtiff ‐no‐dbus ‐no‐phonon ‐no‐phonon‐backend ‐no‐webkit 该命令表示不编译sql‐sqlite, qt3support, libtiff, dbus, phonon, phonon‐backend及webkit模块。configure命令运行时会询问Qt的版本是商业版还是免费开源版,选择免费开源版。该命令大约运行10分钟。 6. 运行nmake进行编译。在命令行窗口中,将当前目录切换到d:qtvc,运行命令nmake,对Qt的源代码进行编译。该命令大约运行2~3个小时。为了验证Qt库是否已经被正确编译,用户可以查看目录D:qtvclib。如果该目录包含,等库文件,而且这些库文件的更新时间正好为运行nmake命令的时间,则表示Qt库已被成功编译。编译完毕后d:qtvc目录占用了大约10G的空间,其中大部分是.obj文件。用户可以在该目录下运行命令“del *.obj /s”删除这些文件,以节省磁盘空间。缩减后的目录大约占用2.6G空间。 2.4 开发环境的设置 在VS 2008中开发Qt应用程序需要做以下设置。 指定Qt库的头文件位置以及库文件。Qt应用程序通常以相对路径而不是绝对路径的方式包含Qt库的头文件,比如使用“#include ”而不是使用“#include ”。当编译器看到这个预处理命令时,需要知道去哪个目录寻找所包含的头文件,这需要运行VS 2008的菜单项Visual Studio ToolsOptionsProjects and SolutionsVC++ Directories。在对话框的“show directories for”部分,我们选择“Include files”以添加Qt头文件所在的目录。如果读者计划使用Qt 4.7.1本身的库,这些头文件、库文件位于d:qt4.7.1目录下。如果读者计划使用自己编译的Qt库,这些头文件、库文件位于d:qtvc目录下。下面我们以后者为例进行介绍。 对于本书,设我们已经按照1.4节所述将目录“d:qtvc”映射为盘符“q:”,则所有Qt的头文件都存放在q:include的某一个子目录下。如果我们只是将目录q:include添加到“Include files”部分,Qt应用程序就需要使用诸如#include 的形式来包含子目录QtGui下的头文件QColor.h。一种更简单的“Include files”部分。这样,Qt应用程序就可以直接使用诸如#include 做法是将目录q:includeQtGui也添加到的形式来包含子目录下的文件。由于大多数Qt应用程序都会用到子目录QtCore以及QtGui下的头文件,所以我们建议将这两个子目录(即q:includeQtCore,q:includeQtGui)以及q:include添加到“Include files”部分。 Qt提供了一些例子和演示程序,这些程序被存放在Qt安装目录的examples和demos子目录下。这些程序的VS 2008项目文件以相对路径的方式(比如“....include”)来指定Qt头文件的所在位置。如果读者将它们复制到文件系统其它位置进行修改和编译,这些相对路径失效,导致VS 2008编译这些程序时出错。此时应该以绝对路径的方式将这些程序所依赖的头文件添加到“Include files”部分。 Qt应用程序必定会调用Qt库文件中的函数,VS 2008链接器需要知道该程序应该和哪些库文件链接。用户应该首先运行VS 2008的菜单项Visual Studio ToolsOptionsProjects and SolutionsVC++ Directories。在对,添加Qt库文件所在的目录d:qtvclib。然后,话框的“show directories for”部分,我们选择“Library files”在VS 2008中执行菜单ProjectPropertiesConfiguration PropertiesLinkerInputAdditional Dependencies,在编辑框中输入该程序用到的Qt库文件。如果该程序只用到QtCore以及QtGui模块,应该在编辑框中输入“ ”。 由于Qt应用程序在运行的时候需要使用d:qtvcbin目录下的动态链接库(DLL文件),所以用户应该将该目录加入到Windows系统的环境变量PATH中。具体地说,执行显示桌面我的电脑右键属性高级环境变量系统变量PATH,在其末尾加上d:qtvcbin。 如果用户没有执行这个操作,可能出现的错误情形为:用户能够在VS2008环境中执行一个Qt应用程序(因为下文的Qt Visual Studio Add‐in会做以上设置),而在命令行窗口中无法执行该Qt应用程序(因为它找不到DLL文件)。 安装插件Qt Visual Studio Add‐in。为了便于在VS 2008环境下使用Qt库,可以从以下地址下载、安装为了方便读者,插件Qt Visual Studio Add‐in:/downloads/visual‐studio‐add‐in‐beta。随书光盘含有该软件,存放为 projectsqtqt‐vs‐addin‐。安装过程中选用默认安装参数即可。安装完毕后,运行VS 2008,会有一个名为Qt的菜单项。执行Qt OptionsQt VersionsAdd,在Version Name域输入任意名字比如vc,在Path域中输入d:qtvc。至此,该Qt插件已经和VS无缝集成在一起了。 该插件需要.NET Framework 3.5 SP1。否则,执行菜单命令QtLaunch Designer时,会出现“Method not found …”的提示,导致无法使用Qt Designer来快速设计对话框等屏幕控件。如果出现这个问题,解决方法如下。 1. 卸载Qt Visual Studio Add‐in。 2. 卸载Windows操作系统此前安装的.NET Framework。可以从网上下载并使用一个工具软件“dotnet framework cleanup tool”进行卸载。为了方便读者,随书光盘含有该软件,存放为projectsqt dotnetfx_cleanup_。该步骤需要10分钟左右,用户可以点击其View Log按钮察看工作过程。 3. 下载、安装.NET Framework 3.5 SP1。为方便读者,随书光盘含有该软件,存放为 projectsqt 。该步骤需要20分钟左右。在开始阶段需要用户的计算机和互联网相连。安装完毕后,重新启动机器。用资源管理器打开目录%systemroot%mework。如果其中含有一个子目录v3.5,则表明安装成功。 4. 重新安装Qt Visual Studio Add‐in。 编写测试程序。安装完毕Qt Visual Studio Add‐in,我们可以尝试在VS 2008环境下编写一个小测试程序。运行FileNewProject,在弹出的对话框中选择Qt4 Projects。有多种项目类型可供选择,本书仅涉及其中两个:(1)Qt Concole Application,即主控台程序。这种类型的程序不使用Qt GUI模块的任何类或者函数,运行时没有图形界面,只有一个能够显示文字的窗口,允许用户通过键盘输入一些信息,程序将运行结果以文字形式显示在该窗口中。该窗口通常被称为命令行窗口。(2)Qt Application,即一般的图形界面程序。这种类型的程序使用Qt GUI模块的函数,显示一个具有图形界面的窗口。以上两种类型相互排斥,不要试图创建一个即具有命令行窗口又具有图形界面窗口的程序。如果一个程序使用了Qt GUI模块的任何类或者函数,就只能创建图形界面程序。2.5节将介绍如何创建主控台程序,本节仅介绍如何创建图形界面程序。 在Name域输入hello,在Location域输入一个目录名,以存放Qt插件自动生成的源文件、头文件。点击OK按钮后会启动一个创建项目的向导,其中有一页罗列了Qt的多个软件模块,供程序员选择,以和应用程序链接。我们暂时选择默认配置即可。项目创建完毕后,运行BuildBuild Solution对项目进行编译。成功后,执行DebugDebug Without Debugging,一个标题为“hello”的空白窗口弹出,表明该应用程序运行成功。下面我们来看看Qt是如何实现这个简单程序的。 从VS 2008的Solution Explore中可以看到Qt插件为我们创建了源文件(source files),,头文件(header files)hello.h,资源文件(resource files),以及若干生成文件(generated files)。目前,我们不必弄清楚每个文件、每一行的含义,我们只关心其中部分内容。hello.h的主要内容如下。 #include ① #include "ui_hello.h" ② class hello : public QMainWindow { Q_OBJECT public: hello(QWidget *parent = 0, Qt::WFlags flags = 0); ~hello(); private: Ui::helloClass ui; }; 由于该头文件使用了类QMainWindow,所以行①包含了头文件QMainWindow。Qt的每个类均对应着一个与该类同名的头文件。Qt的每个模块有一个汇总的头文件,使用include语句包含了与该模块中每个类对应的头文件。例如,Q:includeQtGui目录下的头文件QtGui用include语句包含了QtGui模块几百个类对应的头文件。一个源程序如果包含了这个汇总头文件,它就间接地包含了这个模块的所有头文件,程序员不必再写一大堆的include语句。但是,如果一个模块的头文件太多,这个做法会增加编译时间。如果一个源文件中所涉及的Qt类的数量不多,我们应该仅包含和这些类对应的头文件,以缩减编译时间。 行②从类QMainWindow派生新类hello。类QMainWindow实现了一个应用程序主窗口的功能。它能够在操作系统的图形环境中显示自己,接收鼠标、键盘等消息进行处理。菜单、滚动条等部件常常作为子对象,被添加到该类的对象中。 用户在声明类hello时用到了宏Q_OBJECT,应该将声明该类的头文件hello.h加入到VS 2008项目的“Header Files”部分,否则将产生编译错误,具体原因我们将在17.2中阐述。 项目中的内容如下。 #include "hello.h" #include int main(int argc, char *argv[]) { } QApplication a(argc, argv); hello w; (); return (); ③ ④ ⑤ ⑥ 行③定义了一个QApplication对象,用于管理程序命令行等信息。行④定义一个hello对象,行⑤显示该对象。行⑥启动Qt的事件处理机制,处理用户的鼠标输入、键盘输入等事件。
发布评论