资源预览内容
第1页 / 共49页
第2页 / 共49页
第3页 / 共49页
第4页 / 共49页
第5页 / 共49页
第6页 / 共49页
第7页 / 共49页
第8页 / 共49页
第9页 / 共49页
第10页 / 共49页
亲,该文档总共49页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Qt Creator快速入门第2版第5章 应用程序主窗口 (3课时)这一章开始接触应用程序主窗口的相关内容。对于日常见到的应用程 序而言,它们中的许多都是基于主窗口的,主窗口中包含了菜单栏、 工具栏、状态栏和中心区域等。本章会详细介绍主窗口的每一个部分 ,还会涉及到资源管理、富文本处理、拖放操作和文档打印等相关内 容。在Qt中提供了以QMainWindow类为核心的主窗口框架,它包含了众 多相关的类:主 要 内 容n5.1 主窗口框架(第1课时)n5.2 富文本处理(第2课时)n5.3 拖放操作(第3课时)n5.4 打印文档(第3课时)n5.5 小结(第3课时)5.1 主窗口框架n菜单栏和工具栏n使用资源系统n中心部件nDock部件n状态栏n自定义菜单主窗口为建立应用程序用户界面提供了一个框架,Qt提供了QMainWindow和与 其相关的一些类来进行主窗口的管理。QMainWindow类拥有自己的布局:菜单栏(QMenuBar)。菜 单栏包含了一个下拉菜单项的 列表,这些菜单项由QAction 动作类实现。菜单栏位于主窗 口的顶部,一个主窗口只能有 一个菜单栏。工具栏(QToolBar)。工 具栏一般用于显示一些常用 的菜单项目,它也可以插入 其他窗口部件,并且工具栏 是可以移动的。一个主窗口 可以拥有多个工具栏。中心部件(Central Widget)。在主窗口的中心 区域可以放入一个窗口部件 作为中心部件,它是应用程 序的主要功能实现区域。一 个主窗口只能拥有一个中心 部件。Dock部件(QDockWidget )。Dock部件常被称为停靠 窗口,因为它可以停靠在中心 部件的四周。它用来放置一些 部件来实现一些功能,就像个 工具箱一样。一个主窗口可以 拥有多个Dock部件。状态栏(QStatusBar)。 状态栏用于显示程序的一些状 态信息,它在主窗口的最底部 。一个主窗口只能拥有一个状 态栏。在设计器中给菜单栏、工具栏添加动作在Qt Creator中双击项目中的.ui文件进入设计模式。n添加菜单,双击左上角的“在这里输入”,修改为“文件(/ 添加打开菜单QAction *action_Open = editMenu-addAction( QIcon(“/images/open.png“),tr(“打开文件(/ 设置快捷键 action_Open-setShortcut(QKeySequence(“Ctrl+O“); / 在工具栏中添加动作 ui-mainToolBar-addAction(action_Open); 工具栏n工具栏QToolBar类提供了一个包含了一组控件的可以移动的面板。在上面已经看到可以将QAction对象添加到工具栏中,它默认只是显示一个动作的图标,这个可以在QToolBar的属性栏中进行更改。n在设计器中可以查看QToolBar的属性栏,其中toolButtonStyle属性设置图标和相应文本的显示及其相对位置等;movabel属性设置状态栏是否可以移动;allowedArea设置允许停靠的位置;iconsize属性设置图标的大小;floatable属性设置是否可以悬浮。在工具栏中添加部件QToolButton *toolBtn = new QToolButton(this); / 创建QToolButton toolBtn-setText(tr(“颜色“); QMenu *colorMenu = new QMenu(this); / 创建一个菜单 colorMenu-addAction(tr(“红色“); colorMenu-addAction(tr(“绿色“); toolBtn-setMenu(colorMenu); / 添加菜单 toolBtn-setPopupMode(QToolButton:MenuButtonPopup); / 设置弹出模式 ui-mainToolBar-addWidget(toolBtn); / 向工具栏添加QToolButton按钮 QSpinBox *spinBox = new QSpinBox(this); / 创建QSpinBox ui-mainToolBar-addWidget(spinBox); / 向工具栏添加QSpinBox部件资源系统Qt资源系统是一个独立于平台的(跟使用的操作系统无关)用于在可执行文件中存储二进制文件的机制。n可以让需要的文件(图片、文本等)包含到程序编程生成的可执行文件(例如exe文件)中。n保证了程序中使用的文件不会丢失、不会因为存放路径而导致程序运行错误。在Qt Creator中添加资源n第一步,添加Qt资源文件。往项目中添加新文件,选择Qt分类中的Qt资源文件,文件 名称改为“myImage”,其他选项默认即可。n第二步,添加资源。建立好资源文件后会默认进入资源管理界面,就是新建的 myImage.qrc文件中。现在先到项目文件夹myMainWindow中新建一个名为 “images”的文件夹,并在其中放入两张图标图片,比如这里放入了一个“new.png”和 一个“open.png”图片。(注意:Qt的资源系统要求资源文件必须放在与qrc文件同级或子级目录下,如果放在其他地方,当添加资源时会提示将文件复制到有效的位置。 )n 然后回到Qt Creator中,在资源管理界面,按下“添加”按钮,选择“添加前缀”, 然后将属性栏中的前缀改为“/myImage”,再点击“添加”按钮,选择“添加文件”,在弹 出的对话框中进入到前面新建的images文件夹中,选中那两张图片,点击打开即可。 这时myImage.qrc文件中就出现了添加的图片的列表。最后按下Ctrl+S快捷键,保存对文件的修改(注意:这一点很重要,如果没有保存,在下面使用图片时将看不到图 片)。 n第三步,使用图片。在设计模式Action编辑器中双击“新建文件”动作,这时 会弹出编辑动作对话框。在其中将对象名称改为“action_New”,工具提示改 为“新建文件”,然后按下图标后面的按钮,进入选择资源界面。n第一次进入该界面还没有显示可用的资源,需要按下左上角的重新加载绿色 箭头图标,这时图片资源就显示出来了。这里选择new.png图片,然后按下 确定按钮。n如果在编写代码时使用new.png图片,那么就可以将其路径指定为 “:/myImage/images/new.png”, 前缀“/myImage”是添加资源时手动设置 的。资源文件介绍n在使用资源时添加的qrc资源文件其实是一个XML格式的文本文件,进入编辑 模式,在myImage.qrc文件上点击鼠标右键,选择“用打开”“Plain Text Editor”,这时就会看到myImage.qrc的内容如下:images/new.pngimages/open.png在这里指明了文件类型为RCC,表明是Qt资源文件。然后是资源前缀,在下面罗 列了添加的图片的路径。 n当往项目中添加了一个资源文件时,会自动往工程文件myMainWindow.pro 中添加代码: RESOURCES += myImage.qrc 这表明项目中使用了资源文件myImage.qrc。 中心部件n在主窗口的中心区域可以放置一个中心部件,它一般是一个编辑器或者浏览 器。这里支持单文档部件,也支持多文档部件。一般的,会在这里放置一个 部件,然后使用布局管理器使其充满整个中心区域,并可以随着窗口的大小 变化而改变大小。例如在设计模式中,往中心区域拖入一个Text Edit,然后 点击界面,按下Ctrl+G使其处于一个栅格布局中。 效果如下。Dock部件nQDockWidget类提供了这样一个部件,它可以停靠在QMainWindow中也可以悬 浮起来作为桌面顶级窗口,我们称它为Dock部件或者停靠窗口。Dock部件一 般用于存放其他一些部件来实现一些特殊功能,就像一个工具箱一样。它在 主窗口中可以停靠在中心部件的四周,也可以悬浮起来,被拖动到任意的地 方,还可以被关闭或隐藏起来。一个Dock部件包含一个标题栏和一个内容区 域,可以向Dock部件中放入任何部件。 n例如:在设计模式中向中心区域拖入一个Dock Widget部件,然后再向Dock 中随意拖入几个部件,比如这里拖入一个Push Button和一个Font Combo Box。然后在dockWidget的属性栏中更改其windowTitle为“工具箱”。状态栏nQStatusBar类提供了一个水平条,用来显示状态信息。QMainWindow中默认提供了一个状态栏。n状态信息可以被分为三类:临时信息,如一般的提示信息;正常信息,如显示页数和行号;永久信息,如显示版本号或者日期。可以使用 showMessage()函数来显示一个临时消息,它会出现在状态栏的最左边。一般用addWidget()函数添加一个QLabel到状态栏上用于显示正常信息,它会生成到状态栏的最左边,可能会被临时消息所掩盖。如果要显示永久信息, 要使用addPermanentWidget()函数来添加一个如QLabel一样的可以显示信息的部件,它会生成在状态栏的最右端,不会被临时消息所掩盖。n在状态栏的最右端,还有一个QSizeGrip部件,用来调整窗口的大小,可以使用setSizeGripEnabled()函数来禁用它。目前的设计器中还不支持直接向状态栏中拖放部件,所以需要使用代码来生成 。例如:/ 显示临时消息,显示2000毫秒即2秒钟 ui-statusBar-showMessage(tr(“欢迎使用多文档编辑器“), 2000); / 创建标签,设置标签样式并显示信息,将其以永久部件的形式添加到状态栏 QLabel *permanent = new QLabel(this); permanent-setFrameStyle(QFrame:Box | QFrame:Sunken); permanent-setText(“www.yafeilinux.com“); ui-statusBar-addPermanentWidget(permanent);此时运行程序,可以发现“欢迎使用多文档编辑器”字符串在显示一会儿后就 自动消失了,而“www.yafeilinux.com”一直显示在状态栏最右端。 自定义菜单Qt中的QWidgetAction类可以实现自定义菜单的功能。为了实现自定义菜单,需要新建一个类,它继承自QWidgetAction类,并且在其中重新实现createWidget()函数。 自学内容:写一个程序,实现了这样一个菜单:它包含一个标签和一个行编辑器,可以在行编辑器中输入字符串,然后按下回车键,就可以自动将字符串输入到中心部件文本编辑器中。 5.2 富文本处理富文本(Rich Text)或者叫做富文本格式,简单来说就是在文档中可以使用多种格式,比如字体颜色、图片和表格等等。它是与纯文本(Plain Text)相对而言的,比如Windows上的记事本就是纯文本编辑器,而Word就是富文本编辑器。n富文本文档结构 n文本块 n表格、列表与图片 n查找功能 n语法高亮与HTML 在Qt中提供了对富文本处理的支持。Qt中对富文本的处理分为了编辑操作和 只读操作两种方式。n编辑操作是使用基于光标的一些接口函数,这样更好的模拟了用户的编辑操 作,更加容易理解,而且不会丢失底层的文档框架;n而对于文档结构的概览,使用了只读的分层次的接口函数,它们有利于文档 的检索和输出。对于文档的读取和编辑要使用不同方面的两组接口。n文档的光标主要基于QTextCursor类n文档的框架主
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号