虽然Qt一开始只是一个用于开发具有图形用户界面的跨平台应用程序的工具,但该工具包已经扩展为一个有用的工具,用于构建所有类型的软件命令行应用程序、嵌入式软件和用于重型工作站应用程序的图形用户界面。
Qt的历史根源使得创建图形用户界面和围绕它构建应用程序变得非常容易。本章通过几个简单的步骤从最初的想法一直到一个可工作的应用程序。
1 The Sketch
在开发软件时,最好有一个草图来显示您想要实现的目标。本章的目标是实现一个简单的电话簿,它包含联系人和电话号码的列表。
图形用户界面(从这里开始的UI)将围绕两个对话框构建:一个用于显示列表和可用操作,另一个用于编辑联系人。图2-1显示了这两个对话框的早期草稿。
图2-1
该过程的下一步是将草图中的想法转化为可以实现的结构。为此,您必须了解Qt应用程序是如何工作的。
2 Event-Driver Applications 事件驱动的应用
所有Qt应用程序都是事件驱动的,因此不能直接从main函数执行到应用程序的所有部分。相反,您从main函数初始化应用程序,然后main函数调用QApplication对象上的exec方法。这将启动应用程序的事件循环。事件可以是网络上接收到的新包,可以是一个定时器事件,也可以是用户按了一个键或移动了鼠标的事件。
QApplication对象等待这些事件,并将它们传递给任何受影响的QObject。例如,当用户在图2-1所示的电话簿对话框中单击Clear All按钮时,该单击事件会加入到应用程序的事件循环。然后QApplication对象获取单击的事件,并将其传递给受影响的对象:在本例中,表示按钮的QPushButton对象。然后,该按钮对象对事件作出反应并发出相关信号。
通过将被单击的按钮和选中的项目连接到实现应用程序实际功能的插槽,用户界面被设置为对用户交互作出反应。因此,在开发应用程序时,一个好的出发点是识别用户可以通过图2-1所示的UI执行的操作。
-第一个操作是启动应用程序。当这种情况发生时,将显示列表对话框;
-用户添加一个新项目。这显示了一个空的编辑对话框;
-用户编辑当前选择的项目。这显示了一个填充的编辑对话框;
-用户删除当前选择的项目;
-用户清除列表;
-用户退出应用程序;
-在编辑对话框中,用户批准所做的更改。这意味着更改将反映在列表对话框中;
-在编辑对话框中,用户取消所做的更改。
从上述列表的第一条开始,主机操作系统必须负责启动应用程序。在这个过程中,您的部分是从主函数中显示列表对话框。其余的动作在组成UI的两个对话框上显示为按钮。
总结一下:该应用程序由一个主函数、一个列表对话框和一个编辑对话框组成。每个对话框由一个表单(即UI的XML描述)和一个组成Qt感兴趣的实际QDialog的类组成。这些信息足以创建一个项目文件。结果如清单2-1所示。注意,它从应用程序模板应用程序开始,这是所有Qt应用程序的起点。项目文件的其余部分只是需要创建的文件列表,这是您在本章的其余部分将要做的事情。
现在为应用程序创建一个新目录,并将项目文件放在其中。当您将本章中显示的其余文件放入该目录时,您就得到了一个完整的应用程序。
3 Using Designer
双击打开QtCreator后,在使用时,会出现无响应或者闪退的情况,一种有效的解决办法是以管理员身份运行。网上介绍的其他的方法我试了几个,目前这种方法是最有效的。通过下图的操作即可,也可以通过右键桌面上QtCreator的快捷方式选择“以管理身份运行”。具体原因不解释,大家可以网上搜索。
设计器是用于设计Qt附带的用户界面的工具。接下来我们按照图2-1所示的草图进行控件布局:
3-1 创建工程
1)QtCreator打开后如下图所示:
2)文件->新建文件或项目->Application->Qt Widget Application->choose:
3)填写项目名称,工程路径,点击下一步
4)构建系统选择qmake,点击下一步
5)填写class name,Base Class 选择QDialog(QMainWindow,QWidget,QDialog的区别后边的章节中会讲到),点击下一步:
6)选择MinGW 32-bit,点击下一步
7)点击完成,暂时不需要版本控制:
8)点击 项目->浏览,选择3)中工程目录下的addressbook文件夹:
至此,工程就创建好了,但是还少一个对话框–EditDialog。
3-2 添加界面
在工程中添加一个对话框的过程如下:
1)右键单击项目名称->Add New…
2)弹出如下界面,一次选择Qt->Qt设计师界面->choose
3)弹出如下界面,选择Dialog with Buttons Bottom,下一步
4)弹出如下界面,填写类名,下一步,默认完成即可。
在工程中加入EditDialog后的工程树:
ListDialog和EditDialog的布局下节详细介绍。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。