blob: 21b2f1bafeb6feaa30f5490f9e7f353d74bc3d7e [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="author" content="alexey.vladykin@sun.com">
<meta name="description" content="A short guide to working with Qt applications in NetBeans IDE or
Oracle Solaris Studio IDE.">
<meta name="keywords" content="NetBeans, Oracle Solaris Studio, IDE, Qt application,
tutorial, guide, user, documentation, open source, C, C++, make, dbx, gdb">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
<link rel="stylesheet" type="text/css" href="../../../netbeans.css">
<title>使用 Qt 应用程序 - NetBeans IDE 教程</title>
</head>
<body style="padding: 2px;">
<h1>使用 Qt 应用程序 - NetBeans IDE 教程</h1>
<div class="articledate" style="margin-left: 0px;font-style:italic;">
<p><em>撰稿人:<i>Alexey Vladykin</i>,维护人:<a href="mailto:susan.morgan@oracle.com"><i>Susan Morgan</i></a><br> 2013 年 10 月</em> [修订版本号:V7.4-1]</div>
<p>本教程指导您如何在 NetBeans IDE 中创建简单的 Qt 应用程序项目。Qt 工具包是一个跨平台的开源应用程序开发框架。</p>
<p><b>目录</b></p>
<img alt="此页上的内容适用于 NetBeans IDE 7.3 和 7.4" class="stamp" src="../../../images_www/articles/73/netbeans-stamp-74-73.png" title="此页上的内容适用于 NetBeans IDE 7.3 和 7.4">
<ul class="toc">
<li><a href="#requirements">要求</a></li>
<li><a href="#intro">简介</a></li>
<li><a href="#qtinstall">安装 Qt 4 软件</a></li>
<li><a href="#creating">创建简单的 Qt 应用程序</a></li>
<li><a href="#conclusion">小结</a></li>
</ul>
<h2><a NAME="requirements"></a>要求</h2>
<p><b>要学习本教程,您需要具备以下软件。</b></p>
<table>
<tbody>
<tr>
<th class="tblheader" scope="col">软件</th>
<th class="tblheader" scope="col">要求的版本</th>
</tr>
<tr>
<td class="tbltd1"><a href="https://netbeans.org/downloads/index.html">NetBeans IDE</a>(支持 C/C++)</td>
<td class="tbltd1">带有 NetBeans C/C++ 插件的 7.3 或 7.4</td>
</tr>
<tr>
<td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Java 开发工具包</a> (JDK)</td>
<td class="tbltd1">版本 7</td>
</tr>
<tr>
<td class="tbltd1"><a href="../../../community/releases/74/cpp-setup-instructions.html">GNU C/C++ 编译器 (GCC)</a></td>
<td class="tbltd1">NetBeans IDE 支持的版本。<br>在 Windows 上,需要 MinGW。 </td>
</tr>
<tr>
<td class="tbltd1"><a href="#qtinstall">Qt 库</a></td>
<td class="tbltd1">版本 4.8 <br>请注意,Qt 5 不使用本教程</td>
</tr><tr><td>
</tr>
</tbody>
</table>
<br>
<p>有关下载并安装所需 NetBeans 软件的信息,请参见 <a href="../../../community/releases/74/install.html">NetBeans IDE 安装说明</a>
</p>
<h2><a name="intro"></a>简介</h2>
<P>NetBeans IDE 支持在 IDE 内创建、构建、运行和调试 Qt 项目。Qt 工具(如 qmake、moc 和 uic)可在需要时自动启动。您不必去考虑(甚至不需要了解)它们。本文演示如何配置 NetBeans IDE 以使用 Qt 4.8 并创建简单的 Qt 应用程序。 </P>
<h2><a name="qtinstall"></a>安装 Qt 软件以在 NetBeans IDE 中使用</h2>
<p>在 IDE 中创建 Qt 应用程序之前,必须安装 Qt 软件并将 NetBeans 配置为使用它。 </p>
<p class="notes"><strong>重要说明:必须使用 Qt 4.8 才能遵循本教程。<br><br> 如果要使用 Qt 5,请参见下面提供的文章:<br> <a href="http://wiki.netbeans.org/Talk:HowToSetup64-BitQt5WithNetBeans7.4OnWindows"> 如何在 Windows 上使用 NetBeans 7.4 设置 64 位 Qt 5</a></strong><br> </p>
<p>请参阅有关针对您的平台设置 Qt 的说明:</p>
<ul type="disc">
<li><a href="#setupwin">在 Windows 上设置适用于 NetBeans IDE 的 Qt</a></li>
<li><a href="#setuplinmac">在 Linux 或 Mac OS X 平台上设置适用于 NetBeans IDE 的 Qt</a></li>
<li><a href="#setupsolaris">在 Oracle Solaris 平台上设置适用于 NetBeans IDE 的 Qt</a></li>
</ul>
<h3><a name="setupwin"></a>在 Windows 上设置适用于 NetBeans IDE 的 Qt 4.8</h3>
<p>这些说明描述了为创建本教程而安装在 Windows 上的软件。 </p>
<h4>下载 Windows 所需的软件</h4>
<ol>
<li>安装 NetBeans IDE 和 C/C++ 插件模块,如<a href="../../../community/releases/74/cpp-setup-instructions.html">为 C/C++/Fortran 配置 NetBeans IDE</a> 中所述。尚不安装编译器。</li>
<li>退出 NetBeans IDE。</li>
<li><a href="http://sourceforge.net/projects/mingw">http://sourceforge.net/projects/mingw</a> 下载 MinGW 安装程序。</li>
<li>运行 MinGW 安装程序,该安装程序的文件名应类似于 <tt>mingw-get-inst-20120426.exe</tt></li>
<li>在 MinGW 安装程序中,选择以下要安装的组件:
<ul><li>C</li>
<li>C++</li>
<li>MSYS Basic System</li>
<li>MinGW Developer Toolkit</li>
</ul>
该安装程序需要一些时间来下载和提取软件包。默认情况下,MinGW 安装在 <tt>C:\MinGW</tt> 中。</li>
<li><a href="http://qt-project.org/downloads">http://qt-project.org/downloads</a> 下载并安装以下 Qt 软件。<br>
<ul><li>适用于 Windows 的 Qt 库 4.8.5 (minGW 4.4 317 MB) </li>
<li>适用于 Windows 的 Qt Creator 2.8.1 (51 MB) </li></ul>
</ol>
<h4>编辑 Windows 路径</h4>
<p>必须编辑 Windows 中的 PATH 环境变量才能添加 Qt、MinGW 和 MSYS 的二进制文件的路径。如果您安装到了默认位置,则路径为:</p>
<ul>
<li><tt>C:\Qt\4.8.5\bin</tt></li>
<li><tt>C:\MinGW\bin</tt></li>
<li><tt>C:\MinGW\MSYS\1.0\bin</tt></li>
</ul>
<p><b>将路径添加到 Path 环境变量:</b></p>
<ol>
<li>打开“环境变量”窗口:
<ul>
<li>在 Windows XP 和 Windows 2000 上:右键单击“我的电脑”>“属性”>“高级”标签 >“环境变量”按钮。</li>
<li>在 Windows Vista 和 Windows 7 上:右键单击“我的计算机”>“属性”>“高级系统设置”链接 >“环境变量”按钮。</li></ul>
<li>在“环境变量”窗口中,选择“系统变量”部分中的 Path 变量,然后单击“编辑”。</li>
<li>在路径结尾插入一个分号并添加 Qt、MinGW 和 MSYS 的可执行文件的路径。在路径之间使用分号,并且不要使用任何空格。请小心不要删除任何已在 PATH 上的内容,否则您的计算机可能无法正常工作。<br>
<p>完成后,您的路径应类似于以下内容:</p>
<pre>%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;
%SYSTEMROOT%\System32\WindowsPowerShell\v1.0;C:\MinGW\bin;C:\MinGW\MSYS\1.0\bin;C:\Qt\4.8.5\bin</pre>
</li>
<li>单击“环境变量”窗口中的“确定”。</li>
</ol>
<h4>为 MinGW 和 Qt 创建工具集合</h4>
<p>您需要创建使用 MinGW 编译器、MSYS 命令和 Qt 命令的新工具集合。</p>
<p><b>创建新工具集合:</b></p><ol>
<li>通过选择 "Window"(窗口)> "Services"(服务)启动 NetBeans IDE 并打开 "Services"(服务)窗口。
<li>展开 "C/C++ Build Hosts"(C/C++ 构建主机)节点和本地主机节点,然后右键单击 "Tool Collections"(工具集合)节点并选择 "Add New Tool Collection"(添加新工具集合)。<br><br> <img alt="&quot;Add New Tool Collection&quot;(添加新工具集合)选项的屏幕快照" class="b-all margin-around" src="../../../images_www/articles/73/cnd/qt/qt-addtool.png"></li>
<li>将 MinGW 安装的 bin 目录指定为工具集合的基目录(例如 <tt>C:\mingw\bin</tt>)。<br> "Tool Collection Family"(工具集合系列)和 "Tool Collection Name"(工具集合名称)应自动填写为 MinGW。
</li>
<li>将 "Tool Collection Name"(工具集合名称)更改为 MinGW_Qt 并单击 "OK"(确定)。<br>
</li>
<li>右键单击 "Services"(服务)窗口中的 "Tool Collection"(工具集合)节点下的新 MinGW_Qt 工具集合,然后选择 "Properties"(属性)。<br>这些工具的路径应类似于下图。<br> <img SRC="../../../images_www/articles/73/cnd/qt/qt-toolpaths.png" alt="显示 MinGW 工具路径的屏幕快照" class="margin-around">
</li>
<li>检查路径中的 Make 命令和 QMake 命令并根据需要更正它们。<br> Make 命令应为 <tt>C:\MinGW\MSYS\1.0\bin\make.exe</tt> 命令,而 QMake 命令应为 <tt>C:\Qt\4.8.5\bin\qmake.exe</tt> 命令。</li>
<li>选中 MinGW_Qt 时单击 "Default"(默认)按钮以使其成为默认工具集合。</li>
<li>继续执行本文<a href="#creating">创建简单的 Qt 应用程序</a>中的步骤。</li>
</ol>
<h3><a name="setuplinmac"></a>在 Linux 或 Mac OS X 平台上设置适用于 NetBeans IDE 的 Qt</h3>
<ol><li><a href="http://qt-project.org/downloads" target="_blank">http://qt-project.org/downloads</a> 下载适用于 Linux 或 Mac OS X 平台的 Qt 库,或者从 Linux 包资源库获取它们。</li>
<li>如果您的系统上尚不存在编译器,请如<a href="../../../community/releases/74/cpp-setup-instructions.html">为 C/C++/Fortran 配置 NetBeans IDE</a> 中所述安装它们。 </li>
<li>将编译器和 Qt 工具的路径添加到 PATH 环境变量中</li>
<li>在终端窗口中,键入 <tt>qmake -v</tt><tt>gcc --version</tt> 以确保这些命令位于您的路径中。</li>
<li>当命令行中提供这些工具时,请启动 NetBeans IDE,然后检查“工具集合”属性以确保编译器、make 命令和 qmake 命令的路径正确。</li>
<li>继续执行本文<a href="#creating">创建简单的 Qt 应用程序</a>中的步骤。</li>
</ol>
<h3><a name="setupsolaris"></a>在 Oracle Solaris 平台上设置适用于 NetBeans IDE 的 Qt</h3>
<p>对于 Oracle Solaris 平台,没有可用的 Qt 二进制文件。然而,可以从源构建 Qt,然后将其与 NetBeans IDE 配合使用。
</p>
<ol>
<li><a href="../../../community/releases/74/cpp-setup-instructions.html">为 C/C++/Fortran 配置 NetBeans IDE</a> 中所述安装编译器。 </li>
<li><a href="ftp://ftp.qt-project.org/qt/source/">ftp://ftp.qt-project.org/qt/source/</a> 下载 Qt 源</li>
<li>有关构建说明,请参阅 Qt 文档<a href="http://qt-project.org/doc/qt-4.8/install-X11.html">为 X11 平台安装 Qt</a></li>
<li>成功构建 Qt 二进制文件之后,请编辑 PATH 环境变量以添加 Qt 二进制文件的路径。</li>
<li>在终端窗口中,键入 <tt>qmake -v</tt><tt>gcc --version</tt> 以确保这些命令位于您的路径上。</li>
<li>当命令行中提供 GNU 编译器和 Qt 工具时,启动 NetBeans IDE。 </li>
<li>检查“工具集合”属性以确保编译器和 qmake 命令的路径正确。</li>
<li>继续执行本文<a href="#creating">创建简单的 Qt 应用程序</a>中的步骤。</li>
</ol>
<H2><a name="creating"></a>创建简单的 Qt 应用程序</H2>
<P>在本教程中,您将创建一个简单的 "Hello World" Qt 应用程序,该程序与 Hello Qt World 样例类似(可以在 "Samples"(样例)-> "C/C++" -> "Hello Qt World" 中找到该样例)。</P>
<p>这些说明是面向 Windows 平台编写的。Linux、Mac 和 Solaris 平台上的用户可以使用正确指定了 <tt>qmake</tt> 路径的 GNU 工具集合来执行相同的步骤。
<ol>
<li>首先,创建一个新项目。在 "New Project"(新建项目)对话框中选择 "C/C++ Qt Application"(C/C++ Qt 应用程序),然后单击 "Next"(下一步)。<br> <img alt="&quot;New project&quot;(新建项目)对话框" class="b-all margin-around" src="../../../images_www/articles/73/cnd/qt/qt-create-new-project.png">
</li>
<li>在下一个对话框中,根据需要更改项目的名称和位置。
<p>选中 "Create Main File"(创建主文件)并选择 MinGW_qt 工具集合,然后单击 "Finish"(完成)。</p>
<img alt="&quot;New Qt project&quot;(新建 Qt 项目)对话框" class="b-all margin-around" src="../../../images_www/articles/73/cnd/qt/qt-create-main-file.png">
<p>新创建的项目应类似于下图:</p>
<img alt="Qt 项目和 main.cpp 文件" class="b-all margin-around" src="../../../images_www/articles/73/cnd/qt/qt-app-maincpp.png">
</li>
<li>右键单击该项目节点,然后选择 "Properties"(属性)以打开 "Project Properties"(项目属性)对话框。单击 "Qt" 类别。高级用户可以调整 Qt 项目属性中的许多设置,但对于本教程,您应保留所有默认设置。<br> <img SRC="../../../images_www/articles/73/cnd/qt/qt-project-properties.png" alt="&quot;Qt project properties&quot;(Qt 项目属性)对话框" class="b-all margin-around">
</li>
<li>单击 "Run"(运行)类别并将 "Console Type"(控制台类型)属性设置为 "External Terminal"(外部终端),然后单击 "OK"(确定)。</li>
<li>接下来,您可以创建一个窗体。右键单击 "Resource Files"(资源文件),然后选择 "New"(新建)-> "Qt Form"(Qt 窗体)<br> <img SRC="../../../images_www/articles/73/cnd/qt/qt-app-resource-files.png" alt="向 Qt 项目添加资源文件" class="b-all margin-around">
</li>
<li>在 "New Qt Form"(新建 Qt 窗体)对话框中,键入 <b>HelloForm</b> 作为窗体名称,然后选择 "Dialog without Buttons"(无按钮的对话框)作为窗体类型。选中 "Create C++ wrapper class"(创建 C++ 包装类),然后单击 "Finish"(完成)。<br> <img SRC="../../../images_www/articles/73/cnd/qt/qt-new-form.png" alt="新 Qt 窗体" class="b-all margin-around">
<p>此时将创建三个文件(<tt>HelloForm.ui</tt><tt>HelloForm.cpp</tt><tt>HelloForm.h</tt>),同时 IDE 将自动打开 Qt 设计器,以便于您编辑新窗体 <tt>HelloForm.ui</tt></p>
<img SRC="../../../images_www/articles/73/cnd/qt/qt-designer.png" alt="Qt 设计器自动打开" class="b-all margin-around">
</li>
<li>使用您所具备的 GUI 技能创建一个类似于如下所示的窗体。向窗体中添加两个 QLineEdit 窗口部件,然后将第一个窗口部件的名称更改为 <tt>nameEdit</tt>,并将第二个窗口部件的名称更改为 <tt>helloEdit</tt><br> <img SRC="../../../images_www/articles/73/cnd/qt/qt-designer-form.png" alt="具有所创建的窗体的 Qt 设计器" class="b-all margin-around">
</li>
<li>在创建完窗体之后,保存它并关闭 Qt 设计器。项目如下图所示。<br> <img SRC="../../../images_www/articles/73/cnd/qt/qt-hello-form.png" alt="Hello 窗体源文件" class="b-all margin-around"> <br>
<P>所有新创建的 HelloForm 文件都将置于 "Resource Files"(资源文件)逻辑文件夹中。如果您更喜欢将 CPP 文件放在 "Source Files"(源文件)中,而将 H 文件放置在 "Header Files"(头文件)中,只需将其拖放至所需的逻辑文件夹即可。</P>
<P>您应该会在 "Projects"(项目)标签中看到一个小问号,指示 <tt>#include</tt> 中断指令是否存在。带有红色下划线的 <tt>setupUi</tt> 是由 <tt>#include ui_HelloForm.h</tt> 中断指令引起的,这发生在 <tt>HelloForm.h</tt> 文件中。<tt>ui_HelloForm.h</tt> 包含文件尚不实际存在,它将在第一次构建项目时生成。这就是 Qt 构建系统的工作方式。 </P>
</li>
<li>单击工具栏上的 "Build Project"(构建项目)按钮,错误应该会在生成 <tt>ui_HelloForm.h</tt> 文件时消失。</li>
<li>打开 <tt>main.cpp</tt> 并插入两行负责创建和显示 HelloForm 的代码,如下图中的第 17 行和第 18 行所示。不要忘记包含第 9 行显示的 <tt>HelloForm.h</tt><br> <img SRC="../../../images_www/articles/73/cnd/qt/qt-hello-form-edit.png" alt="编辑 Hello 窗体源文件" class="b-all margin-around">
</li>
<li>单击工具栏中的 "Run"(运行)按钮以运行应用程序。<br> 首先您会看到一个终端窗口,然后是您在 Qt 设计器中创建的对话框。</li>
<li>在文本字段中键入一些内容并按 Enter,您应该看不到任何响应。
<P>要使应用程序进行响应,您必须定义一个槽函数 (slot),并将其连接到由文本字段引发的 <tt>textChanged</tt> 信号。要了解有关 Qt 信号和槽函数的详细信息,请访问 <a HREF="http://doc.qt.digia.com/4.6/signalsandslots.html" TARGET="_blank">http://doc.qt.digia.com/4.6/signalsandslots.html</a></P>
</li>
<li>转到 <tt>HelloForm.h</tt> 并声明该槽函数,如下图中的第 18 行和第 19 行所示:<br> <img SRC="../../../images_www/articles/73/cnd/qt/qt-hello-form-h.png" alt="编辑 Hello 窗体包含文件" class="b-all margin-around">
</li>
<li>然后转到 <tt>HelloForm.cpp</tt> 并插入该槽函数的定义,如下图中的第 17 行到第 23 行所示:<br> <img SRC="../../../images_www/articles/73/cnd/qt/qt-hello-form-slot.png" alt="向窗体源文件添加槽函数" class="b-all margin-around">
</li>
<li>最后,在 HelloForm 构造函数中插入一些代码,以便连接信号和槽函数,如下图中的第 12 行和第 13 行所示:<br> <img SRC="../../../images_www/articles/73/cnd/qt/qt-hello-form-cpp.png" alt="向 Hello 窗体构造函数添加槽函数" class="b-all margin-around">
</li>
<li>现在运行应用程序,当显示对话框时,单击顶部输入字段,键入名称,底部字段将向您回显 Hello,如下所示。<br> <img SRC="../../../images_www/articles/73/cnd/qt/qt-app-running.png" alt="正在运行的 Qt Hello World 应用程序" class="b-all margin-around">
</li>
</ol>
<H2><a name="conclusion"></a>小结</H2>
<p>本文演示了如何设置环境,以便您可以将 NetBeans IDE 与 Qt 库和工具配合使用。</p>
<P>请使用 NetBeans 创建和开发 Qt 应用程序,并将您的反馈发送至 <a HREF="mailto:users@cnd.netbeans.org">CND 邮件列表</a><a href="https://forums.netbeans.org/cnd-users.html">NetBeans C/C++ 用户论坛</a></P>
<P>如果发现错误或者希望提出有关如何增强功能的建议,请将这些错误或建议提交至 <a HREF="https://netbeans.org/bugzilla/enter_bug.cgi?component=cnd">https://netbeans.org/bugzilla/enter_bug.cgi?component=cnd</a>(需要在 netbeans.org 上注册)。</P>
<h2>另请参见</h2>
<p>有关在 NetBeans IDE 中使用 C/C++/Fortran 进行开发的更多文章,请参见 <a href="https://netbeans.org/kb/trails/cnd.html">C/C++ 学习资源</a></p>
<div class="feedback-box"><a href="mailto:users@cnd.netbeans.org?subject=Feedback:%20Working%20with%20Qt%20Applications%20-%20NetBeans%20IDE%207.4%20Tutorial">发送有关此教程的反馈意见</a></div>
<br style="clear: both;">
</BODY>
</HTML>