




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
QT5开发及实例(第5版)第5章Qt
5主窗口及实例——Qt5主窗口构成01基
本
元
素1.菜单栏2.状态栏3.工具栏4.锚接部件5.中心部件基本元素QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menubar)、多个工具栏(toolbars)、多个锚接部件(dockwidgets)、一个状态栏(statusbar)及一个中心部件(centralwidget),是许多应用程序(如文本编辑器、图片编辑器等)的基础。Qt主窗口界面布局如图。基本元素1.菜单栏菜单是一系列命令的列表。为了实现菜单、工具栏按钮、键盘快捷方式等命令的一致性,Qt使用动作(Action)来表示这些命令。Qt的菜单就是由一系列的QAction动作对象构成的列表,而菜单栏则是包容菜单的面板,它位于主窗口标题栏的下面。一个主窗口只能有一个菜单栏。2.状态栏状态栏通常显示GUI应用程序的一些状态信息,它位于主窗口的底部。用户可以在状态栏上添加、使用Qt窗口部件。一个主窗口只能有一个状态栏。基本元素3.工具栏工具栏是由一系列的类似于按钮的动作排列而成的面板,它通常由一些经常使用的命令(动作)组成。工具栏位于菜单栏的下面、状态栏的上面,可以停靠在主窗口的上、下、左、右四个方向上。一个主窗口可以包含多个工具栏。4.锚接部件锚接部件作为一个容器使用,以包容其他窗口部件来实现某些功能。例如,Qt设计器的属性编辑器、对象监视器等都是由锚接部件包容其他的Qt窗口部件来实现的。它位于工具栏区的内部,可以作为一个窗口自由地浮动在主窗口上面,也可以像工具栏一样停靠在主窗口的上、下、左、右四个方向上。一个主窗口可以包含多个锚接部件。5.中心部件中心部件处在锚接部件区的内部、主窗口的中心。一个主窗口只能有一个中心部件。02文本编辑器项目框架文本编辑器项目框架(1)文件操作功能:包括新建一个文件,利用标准文件对话框QFileDialog类打开一个已存在的文件,利用QFile和QTextStream读取文件内容,打印文件(分文本打印和图片打印)。通过实例介绍标准打印对话框QPrintDialog类的使用方法,以QPrinter作为QPaintDevice画图工具实现图片打印。(2)图片处理中的常用功能:包括图片的缩放、旋转、镜像等坐标变换,使用QMatrix实现图片的各种坐标变换。(3)开发文本编辑功能:通过在工具栏上设置文字字体、字号大小、加粗、斜体、下画线及字体颜色等快捷按钮的实现,介绍在工具栏中嵌入控件的方法。其中,通过设置字体颜色功能,介绍标准颜色对话框QColorDialog类的使用方法。(4)排版功能:通过选择某种排序方式实现对文本排序,以及实现文本对齐(包括左对齐、右对齐、居中对齐和两端对齐)和撤销、重做的方法。文本编辑器项目框架【例】(难度一般)(CH501)设计界面,效果如图。文本编辑器项目框架首先建立项目的框架代码,具体步骤如下。(1)以“直接编写代码”(即取消勾选“Generateform”复选框)方式创建Qt项目,项目名ImageProcessor,“ClassInformation”页基类选“QMainWindow”,类名命名为ImgProcessor。(2)添加该工程的提供主要显示文本编辑框函数所在的文件,在ImageProcessor项目名上单击鼠标右键,在弹出的快捷菜单中选择“添加新文件...”选项,在弹出的对话框中选择“C++Class”选项,单击“Choose...”按钮,在弹出的对话框的“Baseclass”下拉列表框中选择基类名“QWidget”,在“Classname”文本框中输入类的名称“ShowWidget”。(3)单击“下一步”按钮,单击“完成”按钮,添加“showwidget.h”头文件和“showwidget.cpp”源文件。文本编辑器项目框架(4)打开showwidget.h头文件,具体代码如下:#include<QWidget>#include<QLabel>#include<QTextEdit>#include<QImage>classShowWidget:publicQWidget{Q_OBJECTpublic:explicitShowWidget(QWidget*parent=0);QImageimg;QLabel*imageLabel;QTextEdit*text;signals:publicslots:};文本编辑器项目框架(5)打开showwidget.cpp文件,添加如下代码:#include"showwidget.h"#include<QHBoxLayout>ShowWidget::ShowWidget(QWidget*parent):QWidget(parent){imageLabel=newQLabel;imageLabel->setScaledContents(true);text=newQTextEdit;QHBoxLayout*mainLayout=newQHBoxLayout(this);mainLayout->addWidget(imageLabel);mainLayout->addWidget(text);}文本编辑器项目框架(6)主函数ImgProcessor类声明中的createActions()函数用于创建所有的动作、createMenus()函数用于创建菜单、createToolBars()函数用于创建工具栏;接着声明实现主窗口所需的各个元素,包括菜单、工具栏及各个动作等;最后声明用到的槽函数,打开imgprocessor.h文件,添加如下代码。(7)下面是主窗口构造函数部分的内容,构造函数主要实现窗体的初始化,打开imgprocessor.cpp文件,添加如下代码:ImgProcessor::ImgProcessor(QWidget*parent):QMainWindow(parent){setWindowTitle(tr("EasyWord")); //设置窗体标题showWidget=newShowWidget(this); //(a)setCentralWidget(showWidget);/*创建动作、菜单、工具栏的函数*/createActions();createMenus();createToolBars();if(img.load("image.png")){ //在imageLabel对象中放置图片showWidget->imageLabel->setPixmap(QPixmap::fromImage(img));}}03菜单与工具栏的实现1.动作(Action)的实现2.菜单(Menus)的实现3.工具栏(ToolBars)的实现菜单与工具栏的实现1.动作(Action)的实现以下是实现基本文件操作的动作(Action)的代码。以下是实现打印文本和图片、图片缩放、旋转和镜像的动作(Action)的代码(位于ImgProcessor::createActions()方法中)。2.菜单(Menus)的实现在实现了各个动作之后,需要将它们通过菜单、工具栏或快捷键的方式体现出来,以下是菜单的实现函数createMenus()代码。菜单与工具栏的实现3.工具栏(ToolBars)的实现接下来实现相对应的工具栏createToolBars(),主窗口的工具栏上可以有多个工具条,通常采用一个菜单对应一个工具条的方式,也可根据需要进行工具条的划分。工具条是一个可移动的窗口,它可停靠的区域由QToolBar的allowAreas决定,包括Qt::LeftToolBarArea、Qt::RightToolBarArea、Qt::TopToolBarArea、Qt::BottomToolBarArea和Qt::AllToolBarAreas。默认为Qt::AllToolBarAreas,启动后默认出现于主窗口的顶部。可通过调用setAllowedAreas()函数来指定工具条可停靠的区域,例如:fileTool->setAllowedAreas(Qt::TopToolBarArea|Qt::LeftToolBarArea);此函数限定文件工具条只可出现在主窗口的顶部或左侧。工具条也可通过调用setMovable()函数设定可移动性,例如:fileTool->setMovable(false);指定文件工具条不可移动,只出现于主窗口的顶部。菜单与工具栏的实现将程序中用到的图片保存到项目debug目录下,运行程序,效果如图。QT5开发及实例(第5版)第5章Qt
5主窗口及实例——Qt5文件操作功能01新建文件新建文件在图中,当单击“文件”→“新建”命令时,没有任何反应。下面将介绍如何实现新建一个空白文件的功能。新建文件(1)打开imgprocessor.h头文件,添加“protectedslots:”变量:protectedslots:voidShowNewFile();(2)在createActions()函数的“"新建"动作”最后添加事件关联:connect(NewFileAction,SIGNAL(triggered()),this,SLOT(ShowNewFile()));(3)实现新建文件功能的函数ShowNewFile()如下:voidImgProcessor::ShowNewFile(){ImgProcessor*newImgProcessor=newImgProcessor;newImgProcessor->show();}新建文件(4)运行程序,单击“文件”→“新建”命令或单击工具栏上的按钮,弹出新的文件编辑窗口,如图。02打开文件打开文件利用标准文件对话框QFileDialog打开一个已经存在的文件。若当前中央窗体中已有打开的文件,则在一个新的窗口中打开选定的文件;若当前中央窗体是空白的,则在当前中央窗体中打开。(1)在imgprocessor.h头文件中添加“protectedslots:”变量:voidShowOpenFile();(2)在createActions()函数的“"打开"动作”最后添加事件关联:connect(openFileAction,SIGNAL(triggered()),this,SLOT(ShowOpenFile()));打开文件(3)实现打开文件功能的函数ShowOpenFile()如下:voidImgProcessor::ShowOpenFile(){fileName=QFileDialog::getOpenFileName(this);if(!fileName.isEmpty()){if(showWidget->text->document()->isEmpty()){loadFile(fileName);}else{ImgProcessor*newImgProcessor=newImgProcessor;newImgProcessor->show();newImgProcessor->loadFile(fileName);}}}打开文件其中,loadFile()函数的实现如下,该函数利用QFile和QTextStream完成具体读取文件内容的工作:voidImgProcessor::loadFile(QStringfilename){printf("filename:%s\n",filename.data());QFilefile(filename);if(file.open(QIODevice::ReadOnly|QIODevice::Text)){QTextStreamtextStream(&file);while(!textStream.atEnd()){showWidget->text->append(textStream.readLine());printf("readline\n");}printf("end\n");}}打开文件在此仅详细说明标准文件对话框QFileDialog的getOpenFileName()静态函数各个参数的作用,其他文件对话框类中相关的静态函数的参数有与其类似之处。QStringQFileDialog::getOpenFileName( QWidget*parent=0, //定义标准文件对话框的父窗口 constQString&caption=QString(), //定义标准文件对话框的标题名 constQString&dir=QString(), //(a) constQString&filter=QString(), //(b) QString*selectedFilter=0, //用户选择过滤器通过此参数返回 Optionsoptions=0);打开文件(4)在该源文件的开始部分添加如下头文件:#include<QFileDialog>#include<QFile>#include<QTextStream>(5)运行程序,单击“文件”→“打开”命令或单击工具栏上的按钮,弹出“打开”对话框,如图。打开文件选择某个文件,单击“打开”按钮,文本编辑框中将显示出该文件的内容,如图。03打印文件1.文本打印2.图像打印打印文件1.文本打印如图所示,QPrintDialog标准打印对话框提供了打印机的选择、配置功能,并允许用户改变文档有关的设置,如页面范围、打印份数等。打印文件具体实现步骤如下。(1)在imgprocessor.h头文件中添加“protectedslots:”变量:voidShowPrintText();(2)在createActions()函数的“"打印文本"动作”最后添加事件关联:connect(PrintTextAction,SIGNAL(triggered()),this,SLOT(ShowPrintText()));(3)实现打印文本功能的函数ShowPrintText()如下:voidImgProcessor::ShowPrintText(){QPrinterprinter; //新建一个QPrinter对象QPrintDialogprintDialog(&printer,this); //(a)if(printDialog.exec()) //(b){ //获得QTextEdit对象的文档QTextDocument*doc=showWidget->text->document();doc->print(&printer); //打印}}打印文件(4)在该源文件的开始部分添加如下头文件:#include<QPrintDialog>#include<QPrinter>(5)运行程序,单击“文件”→“打印文本”命令或工具栏上的按钮,弹出标准打印对话框。打印文件2.图像打印打印图像实际上是在一个QPaintDevice中画图,与平常在QWidget、QPixmap和QImage中画图相同,都是创建一个QPainter对象进行画图,只是打印使用的是QPrinter,QPrinter本质上也是一个绘图设备QPaintDevice。下面将介绍如何实现图像打印功能。(1)在imgprocessor.h头文件中添加“protectedslots:”变量:voidShowPrintImage();(2)在createActions()函数的“"打印图像"动作”最后添加事件关联:connect(PrintImageAction,SIGNAL(triggered()),this,SLOT(ShowPrintImage()));打印文件(3)实现打印图像功能的函数ShowPrintImage()如下:voidImgProcessor::ShowPrintImage(){QPrinterprinter; //新建一个QPrinter对象QPrintDialogprintDialog(&printer,this); //(a)if(printDialog.exec()) //(b){QPainterpainter(&printer); //(c)QRectrect=painter.viewport(); //获得QPainter对象的视图矩形区域QSizesize=img.size(); //获得图像的大小 /*按照图形的比例大小重新设置视图矩形区域*/size.scale(rect.size(),Qt::KeepAspectRatio);painter.setViewport(rect.x(),rect.y(),size.width(),size.height());painter.setWindow(img.rect()); //设置QPainter窗口大小为图像的大小painter.drawImage(0,0,img); //打印图像}}打印文件(4)在该源文件的开始部分添加如下头文件:#include<QPainter>(5)运行程序,单击“文件”→“打印图像”命令或单击工具栏上的按钮,弹出标准打印对话框,显示效果如图。QT5开发及实例(第5版)第5章Qt
5主窗口及实例——Qt5图像坐标变换01缩放功能缩放功能(1)在imgprocessor.h头文件中添加“protectedslots:”变量:voidShowZoomIn();(2)在createActions()函数的“"放大"动作”最后添加事件关联:connect(zoomInAction,SIGNAL(triggered()),this,SLOT(ShowZoomIn()));(3)实现图形放大功能的函数ShowZoomIn()如下:voidImgProcessor::ShowZoomIn(){if(img.isNull()) //有效性判断return;QMatrixmatrix; //声明一个QMatrix类的实例matrix.scale(2,2); //(a)img=img.transformed(matrix);//重新设置显示图形showWidget->imageLabel->setPixmap(QPixmap::fromImage(img));}缩放功能(4)在imgprocessor.h头文件中添加“protectedslots:”变量:voidShowZoomOut();(5)在createActions()函数的“"缩小"动作”最后添加事件关联:connect(zoomOutAction,SIGNAL(triggered()),this,SLOT(ShowZoomOut()));(6)实现图形缩小功能的函数ShowZoomOut()如下:voidImgProcessor::ShowZoomOut(){if(img.isNull())return;QMatrixmatrix;matrix.scale(0.5,0.5); //(a)img=img.transformed(matrix);showWidget->imageLabel->setPixmap(QPixmap::fromImage(img));}缩放功能(7)运行程序,单击“编辑”→“放大”命令或单击工具栏上的按钮,图像放大效果如图。02旋转功能旋转功能ShowRotate90()函数实现的是图形的旋转,此函数实现坐标的逆时针旋转90°。具体实现步骤如下。(1)在imgprocessor.h头文件中添加“protectedslots:”变量:voidShowRotate90();(2)在createActions()函数的“旋转90°”最后添加事件关联:connect(rotate90Action,SIGNAL(triggered()),this,SLOT(ShowRotate90()));(3)ShowRotate90()函数的具体实现代码如下:voidImgProcessor::ShowRotate90(){if(img.isNull())return;QMatrixmatrix;matrix.rotate(90);img=img.transformed(matrix);showWidget->imageLabel->setPixmap(QPixmap::fromImage(img));}旋转功能(4)在imgprocessor.h头文件中添加“protectedslots:”变量:voidShowRotate180();voidShowRotate270();(5)在createActions()函数的“旋转180°”“旋转270°”最后分别添加事件关联:connect(rotate180Action,SIGNAL(triggered()),this,SLOT(ShowRotate180()));connect(rotate270Action,SIGNAL(triggered()),this,SLOT(ShowRotate270()));旋转功能(6)ShowRotate180()、ShowRotate270()函数的具体实现代码如下:voidImgProcessor::ShowRotate180(){if(img.isNull())return;QMatrixmatrix;matrix.rotate(180);img=img.transformed(matrix);showWidget->imageLabel->setPixmap(QPixmap::fromImage(img));}voidImgProcessor::ShowRotate270(){if(img.isNull())return;QMatrixmatrix;matrix.rotate(270);img=img.transformed(matrix);showWidget->imageLabel->setPixmap(QPixmap::fromImage(img));}旋转功能(7)运行程序,单击“旋转”→“旋转90°”命令或单击工具栏上的按钮,图像旋转90°的效果如图。03镜像功能镜像功能ShowMirrorVertical()函数实现的是图形的纵向镜像,ShowMirrorHorizontal()函数实现的则是横向镜像。通过QImage::mirrored(boolhorizontal,boolvertical)实现图形的镜像功能,参数horizontal和vertical分别指定了镜像的方向。具体实现步骤如下。(1)在imgprocessor.h头文件中添加“protectedslots:”变量:voidShowMirrorVertical();voidShowMirrorHorizontal();(2)在createActions()函数的“纵向镜像”“横向镜像”最后分别添加事件关联:connect(mirrorVerticalAction,SIGNAL(triggered()),this,SLOT(ShowMirrorVertical()));connect(mirrorHorizontalAction,SIGNAL(triggered()),this,SLOT(ShowMirrorHorizontal()));镜像功能(3)ShowMirrorVertical()、ShowMirrorHorizontal()函数的具体实现代码如下:voidImgProcessor::ShowMirrorVertical(){if(img.isNull())return;img=img.mirrored(false,true);showWidget->imageLabel->setPixmap(QPixmap::fromImage(img));}voidImgProcessor::ShowMirrorHorizontal(){if(img.isNull())return;img=img.mirrored(true,false);showWidget->imageLabel->setPixmap(QPixmap::fromImage(img));}镜像功能(4)此时运行程序,单击“镜像”→“横向镜像”命令,蝴蝶翅膀底部的阴影从右边移到左边,横向镜像效果如图。QT5开发及实例(第5版)第5章Qt
5主窗口及实例——Qt5文本编辑功能Qt5文本编辑功能在编写包含格式设置的文本编辑程序时,经常用到的Qt类有QTextEdit、QTextDocument、QTextBlock、QTextList、QTextFrame、QTextTable、QTextCharFormat、QTextBlockFormat、QTextListFormat、QTextFrameFormat和QTextTableFormat等。文本编辑各类之间的划分与关系如图。Qt5文本编辑功能实现文本编辑的具体操作步骤如下。(1)在imgprocessor.h头文件中添加“private:”变量:QLabel*fontLabel1; //字体设置项QFontComboBox*fontComboBox;QLabel*fontLabel2;QComboBox*sizeComboBox;QToolButton*boldBtn;QToolButton*italicBtn;QToolButton*underlineBtn;QToolButton*colorBtn;QToolBar*fontToolBar; //字体工具栏Qt5文本编辑功能(2)在imgprocessor.h头文件中添加“protectedslots:”变量:voidShowFontComboBox(QStringcomboStr);voidShowSizeSpinBox(QStringspinValue);voidShowBoldBtn();voidShowItalicBtn();voidShowUnderlineBtn();voidShowColorBtn();voidShowCurrentFormatChanged(constQTextCharFormat&fmt);(3)在相对应的构造函数中,在语句“setCentralWidget(showWidget);”与语句“createActions();”之间添加如下代码。Qt5文本编辑功能(4)在该构造函数的最后部分添加相关的事件关联:connect(fontComboBox,SIGNAL(activated(QString)),this,SLOT(ShowFontComboBox(QString)));connect(sizeComboBox,SIGNAL(activated(QString)),this,SLOT(ShowSizeSpinBox(QString)));connect(boldBtn,SIGNAL(clicked()),this,SLOT(ShowBoldBtn()));connect(italicBtn,SIGNAL(clicked()),this,SLOT(ShowItalicBtn()));connect(underlineBtn,SIGNAL(clicked()),this,SLOT(ShowUnderlineBtn()));connect(colorBtn,SIGNAL(clicked()),this,SLOT(ShowColorBtn()));connect(showWidget->text,SIGNAL(currentCharFormatChanged(QTextCharFormat&)),this,SLOT(ShowCurrentFormatChanged(QTextCharFormat&)));Qt5文本编辑功能(5)在相对应的工具栏createToolBars()函数中添加如下代码://字体工具条fontToolBar=addToolBar("Font");fontToolBar->addWidget(fontLabel1);fontToolBar->addWidget(fontComboBox);fontToolBar->addWidget(fontLabel2);fontToolBar->addWidget(sizeComboBox);fontToolBar->addSeparator();fontToolBar->addWidget(boldBtn);fontToolBar->addWidget(italicBtn);fontToolBar->addWidget(underlineBtn);fontToolBar->addSeparator();fontToolBar->addWidget(colorBtn);调用QFontComboBox的setFontFilters接口可过滤只在下拉列表框中显示某一类字体,默认情况下为QFontComboBox::AllFonts列出所有字体。01设置字体设置字体完成设置选定文字字体的函数ShowFontComboBox()代码如下:voidImgProcessor::ShowFontComboBox(QStringcomboStr) //设置字体{QTextCharFormatfmt; //创建一个QTextCharFormat对象fmt.setFontFamily(comboStr); //选择的字体名称设置给QTextCharFormat对象mergeFormat(fmt); //将新的格式应用到光标选区内的字符}所有对于QTextDocument进行的修改都通过QTextCursor类来完成,具体代码如下:voidImgProcessor::mergeFormat(QTextCharFormatformat){QTextCursorcursor=showWidget->text->textCursor(); //获得编辑框中的光标if(!cursor.hasSelection()) //(a)cursor.select(QTextCursor::WordUnderCursor);cursor.mergeCharFormat(format); //(b)showWidget->text->mergeCurrentCharFormat(format); //(c)}02设置字号设置字号设置选定文字字号大小的ShowSizeSpinBox()函数代码如下:voidImgProcessor::ShowSizeSpinBox(QStringspinValue) //设置字号{QTextCharFormatfmt;fmt.setFontPointSize(spinValue.toFloat());showWidget->text->mergeCurrentCharFormat(fmt);}03设置文字加粗设置文字加粗设置选定文字为加粗显示的ShowBoldBtn()函数代码如下:voidImgProcessor::ShowBoldBtn() //设置文字显示加粗{QTextCharFormatfmt;fmt.setFontWeight(boldBtn->isChecked()?QFont::Bold:QFont::Normal);showWidget->text->mergeCurrentCharFormat(fmt);}其中,调用QTextCharFormat的setFontWeight()函数设置粗细值,若检测到“加粗”按钮被按下,则设置字符的Weight值为QFont::Bold,可直接设为75;反之,则设为QFont::Normal。04设置文字斜体设置文字斜体设置选定文字为斜体显示的ShowItalicBtn()函数代码如下:voidImgProcessor::ShowItalicBtn() //设置文字显示斜体{QTextCharFormatfmt;fmt.setFontItalic(italicBtn->isChecked());showWidget->text->mergeCurrentCharFormat(fmt);}05设置文字加下画线设置文字加下画线在选定文字下方加下画线的ShowUnderlineBtn()函数代码如下:voidImgProcessor::ShowUnderlineBtn() //设置文字加下画线{QTextCharFormatfmt;fmt.setFontUnderline(underlineBtn->isChecked());showWidget->text->mergeCurrentCharFormat(fmt);}06设置文字颜色设置文字颜色设置选定文字颜色的ShowColorBtn()函数代码如下:voidImgProcessor::ShowColorBtn() //设置文字颜色{ QColorcolor=QColorDialog::getColor(Qt::red,this); //(a) if(color.isValid()){ QTextCharFormatfmt; fmt.setForeground(color); showWidget->text->mergeCurrentCharFormat(fmt);}}在imgprocessor.cpp文件的开头添加声明:#include<QColorDialog>#include<QColor>设置文字颜色标准颜色对话框QColorDialog类的使用:QColorgetColor(constQColor&initial=Qt::white,QWidget*parent=0);第1个参数指定了选中的颜色,默认为白色。第2个参数定义了标准颜色对话框的父窗口。07设置字符格式设置字符格式当光标所在处的字符格式发生变化时调用此槽函数,函数根据新的字符格式将工具栏上各个格式控件的显示更新。voidImgProcessor::ShowCurrentFormatChanged(constQTextCharFormat&fmt){ fontComboBox->setCurrentIndex(fontComboBox->findText(fmt.fontFamily())); sizeComboBox->setCurrentIndex(sizeComboBox->findText(QString::number(fmt.fontPointSize()))); boldBtn->setChecked(fmt.font().bold()); italicBtn->setChecked(fmt.fontItalic()); underlineBtn->setChecked(fmt.fontUnderline());}QT5开发及实例(第5版)第5章Qt
5主窗口及实例——Qt5排版功能Qt5排版功能具体实现步骤如下。(1)在imgprocessor.h头文件中添加“private:”变量:QLabel*listLabel; //排序设置项QComboBox*listComboBox;QActionGroup*actGrp;QAction*leftAction;QAction*rightAction;QAction*centerAction;QAction*justifyAction;QToolBar*listToolBar; //排序工具栏(2)在imgprocessor.h头文件中添加“protectedslots:”变量:voidShowList(int);voidShowAlignment(QAction*act);voidShowCursorPositionChanged();Qt5排版功能(3)在相对应的构造函数中,在语句“setCentralWidget(showWidget);”与语句“createActions();”之间添加如下代码://排序listLabel=newQLabel(tr("排序"));listComboBox=newQComboBox;listComboBox->addItem("Standard");listComboBox->addItem("QTextListFormat::ListDisc");listComboBox->addItem("QTextListFormat::ListCircle");listComboBox->addItem("QTextListFormat::ListSquare");listComboBox->addItem("QTextListFormat::ListDecimal");listComboBox->addItem("QTextListFormat::ListLowerAlpha");listComboBox->addItem("QTextListFormat::ListUpperAlpha");listComboBox->addItem("QTextListFormat::ListLowerRoman");listComboBox->addItem("QTextListFormat::ListUpperRoman");(4)在构造函数的最后添加相关的事件关联:connect(listComboBox,SIGNAL(activated(int)),this,SLOT(ShowList(int)));connect(showWidget->text->document(),SIGNAL(undoAvailable(bool)),redoAction,SLOT(setEnabled(bool)));connect(showWidget->text->document(),SIGNAL(redoAvailable(bool)),redoAction,SLOT(setEnabled(bool)));connect(showWidget->text,SIGNAL(cursorPositionChanged()),this,SLOT(ShowCursorPositionChanged()));Qt5排版功能(5)在相对应的工具栏createActions()函数中添加如下代码://排序:左对齐、右对齐、居中和两端对齐actGrp=newQActionGroup(this);leftAction=newQAction(QIcon("left.png"),"左对齐",actGrp);leftAction->setCheckable(true);rightAction=newQAction(QIcon("right.png"),"右对齐",actGrp);rightAction->setCheckable(true);centerAction=newQAction(QIcon("center.png"),"居中",actGrp);centerAction->setCheckable(true);justifyAction=newQAction(QIcon("justify.png"),"两端对齐",actGrp);justifyAction->setCheckable(true);connect(actGrp,SIGNAL(triggered(QAction*)),t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论