Qt版MyWord字处理软件的运行界面
运行程序后会出现主界面,顶端的菜单栏包括“文件”“编辑”“格式”“窗口”和“帮助五个主菜单。
菜单栏下面是工具栏,包含了系统常用的功能按钮。工具栏有四个工具条,分别将一组相关功能按钮或控件组织在一起。
工具栏的第一行有三个工具条: 第一个工具条包括新建、打开、保存、打印等文档管理功能,
第二个工具条包括撤销、重做、剪切、复制和粘贴这些最基本的文本编辑功能,
第三个工具条是各种较高级的文字字体格式设置按钮,包括加粗、倾斜、加下画线,还包括段落对齐及文本颜色设置
在工具栏的第二行的工具条中有三个组合选择框控件,用于为文档添加段落标号和编号,以及选择特殊字体和更改字号。利用该工具条可以完成更复杂的文档排版和字体美化工作。
此外,在图中还给出了使用该软件制作出的二个文档示例。用Qt版MyWord字处理软件制作出的文档统一以HTML格式存盘,可使用Web浏览器打开观看效果。
开发这个软件主要分为如下三个阶段进行。
(1) 界面设计开发
界面设计开发内容包括菜单系统设计、工具栏设计、多窗体MDI程序框架的建立及多个文档子窗口的管理和控制等。
(2) 文本编辑功能实现
文本编辑功能实现主要包括文档的建立、打开和保存,文本的剪切、复制和粘贴,操作撤销与恢复等这些最基本的文档编辑功能。
(3) 排版美化功能实现
排版美化功能实现包括字体选择,字形、字号和文字颜色的设置,文档段落标号和编号的添加,段落对齐方式设置等高级功能实现。
双击项目树的mainwindow.ui文件切换至Ot图形界面设计模式,如图所示
(1) 菜单的创建
在图的窗体设计区左上角有一个“在这里输入”文字标签,用鼠标双击可输入文字,例如,我们输入“文件(F)"后回车 (一定要回车! ) ,就在界面上创建了一个名为“文件”的窗口主菜单,而此时“在这里输入”标签又分别出现在“文件”菜单的右侧和下方,分别在其上双击输入自定义的文字,又可以以同样的方式创建第二个主菜单和“文件”主菜单下的菜单项,当然也可以随时双击“添加分隔符”标签在任意菜单项之间引入分隔条
(2) 菜单项编辑器 (Action Editor)
用第 (1) 步的方法在“文件”主菜单下创建一个“新建”菜单项,窗体设计区下方就会出现菜单项编辑器子窗口,如图所示,在其中可看到新添加的“新建”菜单项的条目。
(3) 编辑菜单项属性
在菜单项编辑器子窗口中,右击要编辑的菜单项条目,从弹出的菜单中选择“编辑…"项,打开该菜单项的“编辑动作”对话框,在其中编辑菜单项的各项属性,如图所示:
(4) 设置菜单项图标
菜单项图标运行时显示在其文字标签之前 (与工具栏对应按钮的图标一致),用于表示该菜单项所具备的功能。设置菜单项图标的方法是: 单击“编辑动作"对话框的“图标栏右侧的 按钮右端的下拉箭头,在弹出的列表中选择"选择文件…"项,弹出“选择一个像素映射"对话框,选择事先准备好的图片资源打开即可,如图所示:
(5) 设置菜单项状态提示
菜单项状态提示指运行时显示在应用程序底部状态栏上的提示文字,当用户将鼠标指针置于该菜单项上时就会显示出来,向用户说明此菜单项的功能,如图所示:
菜单项状态提示无法通过“编辑动作”对话框设置,只能在该菜单项的“属性”窗口中设置,选中菜单项编辑器中要进行设置的菜单项条目,在窗体设计区右下方的“属性”窗口中设置“statusTip的内容即可,如图所示,这里为“新建”菜单项设置的状态提示文字为“创建一个新文档”。
(1)“文件”主菜单文件"主菜单各功能项的设计见表
文件”主菜单的运行显示效果如图所示:
(2)“编辑”主菜单编辑”主菜单各功能项的设计见表
“编辑”主菜单的运行显示效果如图所示:
(3)“格式”主菜单格式"主菜单各功能项的设计见表:
格式”主菜单的运行显示效果如图所示,其下的“字体”和“段落”菜单项的各子菜单皆是可选菜单项,将它们的“Checkable"属性都置为True (勾选),运行时,选中菜单项的图标的四周会出现边框,如图所示。“段落”菜单项下的各子菜单都是互斥的,同一时刻只能有一个菜单项处于选中状态《图标四周有边框),只要将这些子菜单项加入同一个动作组即可达到这种效果下面编程来实现这个功能;
(4)“窗口”主菜单"
窗口主菜单各功能项的设计见表:
“窗口”主菜单的运行显示效果如图所示:
(5)“帮助”主菜单”
帮助主菜单各功能项的设计见表:
这个菜单结构很简单,在添加完其中的两个菜单项后,就可以直接编写代码来实现它们的功能,是右击菜单项编辑器中的对应条目,从弹出的菜单中选择"转到槽"项,在“转到槽"对话框中选择信号triggered()”,单击“OK”按钮即可进入该菜单项动作代码编辑区,如图所示:
编写“关于(A)”菜单项的代码如下:
void MainWindow::on aboutAction triggered()
QMessageBox:about(this,tr("关于"),tr"这是一个基于 Qt5 实现的字处理软rn具备类似微软Office Word 的功能。"));
编写“关于 Qt 5(Q”菜单项的代码如下:
void MainWindow::on aboutOtAction triggered()
QMessageBox::aboutQt(NULL,"关于 Qt 5")
帮助"主菜单的运行显示效果如图所示选择“帮助”*“关于"菜单项,弹出如图所示的“关于"消息框,显示关于MyWord软件的简介信息
选择“帮助”“关于Qt5”菜单项,弹出如图所示的消息框,显示MyWord软件所基于Qt的
版本信息。
本系统的工具栏共有四个工具条,其中三个工具条分别对应“文件”“编辑”和“格式”主菜单的功能,如图所示,最后一个工具条为组合选择栏,它提供三个组合选择框控件,如图所示,实现用户给文本选择段落标号、添加编号、更改字体和字号等高级功能。
(1) 添加工具按钮
对于与某个菜单项功能完全相同的按钮,只要从菜单项编辑器中将相应的菜单项用鼠标拖曳至工具条上的特定位置即可,如图所示。
图中演示了依次将“文件”主菜单下的“新建”“打开"菜单项拖曳至工具条上生成工具按钮的操作,生成的按钮与原菜单项具有一样的图标、状态提示文字及功能。
(2) 按钮分隔
与菜单的设计类似,也可按照菜单项功能的组织结构在对应的工具按钮间插入分隔条,方法是右击工具栏选择“添加分隔符”项,如图所示:
(3) 添加工具条
在Qt系统的界面设计模式下默认在顶端有一个工具条,本例软件因为有多个工具条,故需要用户自己添加。很简单,只要在界面设计模式窗体上右击,选择“添加工具栏"项即可在窗体上添加一个新工具条,然后用同样的方法往其中拖曳菜单项来生成工具按钮,如图所示:
本例将与菜单功能对应的三个工具条设计放置在界面顶部同一行上,完成的效果如图所示:
本例为实现对文档的高级编辑功能,设计了一个附加功能的丁具条,其上是由多个下拉列表构成的组合选择栏。此工具条由于不对应菜单项功能,所以只能由用户从控件工具箱中选择拖曳控件来自定义设计图演示了往窗体上拖入一个组合框并编辑其中各选项(右击后选择“编辑项目."项)的操作。
附加功能的工具条上还有供用户选择字体和字号的组合框,分别命名为fontComboBox和sizeComboBox.设计好界面后编写系统的初始化函数MainWindow::initMainWindowl,在其中加入如下代码
QFontDatabase fontdb;foreach(int fontsize, fontdbstandardSizes()) ui->sizeComboBox->addltem(OString
::number(fontsize));ui->sizeComboBox->setCurrentlndexlui->sizeComboBox->findText/0String.numberlOApplication..font().pointSize())));