Qt之QWidget/QDialog/QMainWindow

QDialog

对话框为用户提供了许多选项和多种选择,允许用户把选项设置为他们喜欢的变量值并从中做出选择。之所以把它们称为对话框,或者简称为“对话”,是因为它们为用户和应用程序之间提供了一种可以相互“交谈”的交互方式。

QDialog类是对话框窗口的基类。对话框窗口是一个*窗口,通常用作短期任务,或者是与用户的简短会话等场合。对话框可以分为模态对话框和非模态对话框。使用QDialog或其子类创建的对话框窗口通常都有一个返回值,有时候还包含了一些默认的按钮。一般情况下,对话框窗口在其右下角都有一个用于控制其大小的伸缩手柄,在Qt应用程序中,这一般可以通过调用setSizeGripEnabled()方法来实现。
QDialog是所有对话框类的基类,它继承自QWidget,它的子类有QAbstractPrintDialog,QColorDialog,QErrorMessage,QFileDialog,QFontDialog,QInputDialog,QMessageBox,QPageSetupDialog,QPrintPreviewDialog,QProgressDialog,QWizard,以及来自Qt3的Q3FileDialog,Q3ProgressDialog,Q3TabDialog,Q3Wizard。

图一:QDialog与其子类的关系

Qt之QWidget/QDialog/QMainWindow

图二:QDialog子类的描述

Qt之QWidget/QDialog/QMainWindow

图三:一个dialog的样例展示

Qt之QWidget/QDialog/QMainWindow

QMainWindow

Qt的QMainWindow类提供了一个应用程序主窗口,包括一个菜单栏(menubar)、多个工具栏(toolbars)、多个锚接部(dockwidgets)、一个状态栏(statusbar)以及一个中心部件(centralwidget)

图四:主窗口展示

Qt之QWidget/QDialog/QMainWindow

1.菜单栏
菜单是一系列命令的列表。菜单可以让用户浏览应用程序并且处理一些事务,上下文菜单和工具栏则提供了对那些经常使用的功能进行快速访问的方法,它们能够提高软件的使用效率。
为了实现菜单、工具栏按钮、键盘快捷方式等命令的一致性,Qt使用动作(Action)来表示这些命令。Qt的菜单就是由一系列的QAction动作对象构成的列表。而菜单栏则是包容菜单的容器,它通常位于主窗口的顶部,标题栏的下面。一个主窗口通常只有一个菜单栏。
2.工具栏
工具栏是由一系列的类似于按钮的动作排列而成的面板,它通常由一些经常使用的命令(动作)组成。工具栏的位置处在菜单栏下面、状态栏的上面,工具栏可以停靠在主窗口的上、下、左、右这4个不同的位置。一个主窗口可以有多个工具栏。
3.状态栏
状态栏通常是显示GUI应用程序的一些状态信息,它位于主窗口的最底部。可以在状态栏上添加、使用Qt窗口部件。一个主窗口只有一个状态栏。
4.锚接部件
对于一个标准的Qt主窗口而言,锚接部件不是必需的。锚接部件一般是作为一个容器来使用,以包容其他窗口部件来实现某些功能。比如Qt设计器的属性编辑器、对象监视器等都是由锚接部件包容其他的Qt窗口部件来实现的。它处在工具栏的内部,可以作为一个窗口*的浮动在主窗口的上面,也可以像工具栏一样停靠在主窗口的左、右、上、下四个方向上。一个主窗口可以包含多个锚接部件。
5.中心窗口部件
中心窗口部件处在锚接部件的内部,它位于主窗口的中心,一个主窗口只有一个中心窗口部件。主窗口QMainWindow具有自己的布局管理器,因此在QMainWindow窗口上设置布局管理器或者创建一个父窗口部件为QMainWindow的布局管理器都是不允许的。但可以在主窗口的中心窗口部件上设置布局管理器。
6.上下文菜单
为了控制主窗口工具栏和锚接部件的显隐,在默认情况下,QMainWindow主窗口提供了一个上下文菜单(ContextMenu)。通常,通过在工具栏或锚接部件上单击鼠标右键就可以**该上下文菜单;也可以通过函数CMainWindow::createPopupMenu()来**该菜单。此外,还可以重写CMainWindow::createPopupMenu()函数,实现自定义的上下文菜单。

QWidget

QWidget类是所有用户界面对象的基类。

*如果需要嵌入到其他窗体中,则基于QWidget创建。
*如果是*对话框,则基于QDialog创建。
*如果是主窗体,则基于QMainWindow创建。