




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第5章 Qt5主窗體,Qt 5主窗體構(gòu)成,Qt 5文件操作功能,Qt 5圖像坐標(biāo)變換,Qt 5文本編輯功能,Qt 5排版功能,5.1 Qt 5主窗體構(gòu)成,5.1.1 基本元素 QMainWindow是一個(gè)為用戶提供主窗口程序的類,包含一個(gè)菜單欄(menu bar)、多個(gè)工具欄(tool bars)、多個(gè)錨接部件(dock widgets)、一個(gè)狀態(tài)欄(status bar)及一個(gè)中心部件(central widget),是許多應(yīng)用程序的基礎(chǔ),如文本編輯器、圖片編輯器等。本章將對此進(jìn)行詳細(xì)介紹。其界面布局如圖5.1所示。,5.1.1 基本元素,1菜單欄 菜單是一系列命令的列表。為了實(shí)現(xiàn)菜單、工具
2、欄按鈕、鍵盤快捷方式等命令的一致性,Qt使用動作(Action)來表示這些命令。Qt的菜單就是由一系列的QAction動作對象構(gòu)成的列表,而菜單欄則是包容菜單的面板,它位于主窗口頂部、主窗口標(biāo)題欄的下面。一個(gè)主窗口最多只有一個(gè)菜單欄。 2狀態(tài)欄 狀態(tài)欄通常顯示GUI應(yīng)用程序的一些狀態(tài)信息,它位于主窗口的最底部。用戶可以在狀態(tài)欄上添加、使用Qt窗口部件。一個(gè)主窗口最多只有一個(gè)狀態(tài)欄。,5.1.1 基本元素,3工具欄 工具欄是由一系列的類似于按鈕的動作排列而成的面板,它通常由一些經(jīng)常使用的命令(動作)組成。工具欄位于菜單欄的下面、狀態(tài)欄的上面,可以??吭谥鞔翱诘纳稀⑾?、左、右四個(gè)方向上。一個(gè)主窗口
3、可以包含多個(gè)工具欄。 4錨接部件 錨接部件作為一個(gè)容器使用,以包容其他窗口部件來實(shí)現(xiàn)某些功能。例如,Qt設(shè)計(jì)器的屬性編輯器、對象監(jiān)視器等都是由錨接部件包容其他的Qt窗口部件來實(shí)現(xiàn)的。它位于工具欄區(qū)的內(nèi)部,可以作為一個(gè)窗口自由地浮動在主窗口上面,也可以像工具欄一樣停靠在主窗口的上、下、左、右四個(gè)方向上,一個(gè)主窗口可以包含多個(gè)錨接部件。 5中心部件 中心部件處在錨接部件區(qū)的內(nèi)部、主窗口的中心,一個(gè)主窗口只有一個(gè)中心部件。,5.1.2 【綜合實(shí)例】:文本編輯器,(1)新建Qt Widgets Application(詳見1.3.1節(jié)),項(xiàng)目名稱為“ImageProcessor”,基類選擇“QMain
4、Window”,類名命名為“ImgProcessor”,取消“創(chuàng)建界面”復(fù)選框的選中狀態(tài)。單擊“下一步”按鈕,最后單擊“完成”按鈕,完成該項(xiàng)目工程的建立。 (2)添加該工程的提供主要顯示文本編輯框函數(shù)所在的文件,在“ImageProcessor”項(xiàng)目名上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“添加新文件.”菜單項(xiàng),在彈出的對話框中選擇“C+ Class”選項(xiàng),單擊“Choose.”按鈕,彈出對話框,在“Base class”后面的下拉列表框中選擇基類名“QWidget”,在“Class name”后面的文本框中輸入類的名稱“ShowWidget”。 (3)單擊“下一步”按鈕,單擊“完成”按鈕,添
5、加“showwidget.h”頭文件和“showwidget.cpp”源文件。,5.1.2 【綜合實(shí)例】:文本編輯器,(4)打開“showwidget.h”頭文件,具體代碼如下: #include #include #include #include class ShowWidget : public QWidget Q_OBJECT public: explicit ShowWidget(QWidget *parent = 0); QImage img; QLabel *imageLabel; QTextEdit *text; signals: public slots: ;,5.1.2 【
6、綜合實(shí)例】:文本編輯器,(5)打開“showwidget.cpp”文件,添加如下代碼: #include showwidget.h #include ShowWidget:ShowWidget(QWidget *parent): QWidget(parent) imageLabel =new QLabel; imageLabel-setScaledContents(true); text =new QTextEdit; QHBoxLayout *mainLayout =new QHBoxLayout(this); mainLayout-addWidget(imageLabel); mainLa
7、yout-addWidget(text); ,5.1.2 【綜合實(shí)例】:文本編輯器,(6)主函數(shù)ImgProcessor類聲明中createActions()函數(shù)用于創(chuàng)建所有的動作、createMenus()函數(shù)用于創(chuàng)建菜單、createToolBars()函數(shù)用于創(chuàng)建工具欄;接著聲明實(shí)現(xiàn)主窗口所需的各個(gè)元素,包括菜單、工具欄及各個(gè)動作等;最后聲明用到的槽函數(shù),打開“imgprocessor.h”文件,添加代碼。,5.1.2 【綜合實(shí)例】:文本編輯器,(7)下面是主窗口構(gòu)造函數(shù)部分的內(nèi)容,構(gòu)造函數(shù)主要實(shí)現(xiàn)窗體的初始化,打開“imgprocessor.cpp”文件,添加如下代碼: ImgProc
8、essor:ImgProcessor(QWidget *parent) : QMainWindow(parent) setWindowTitle(tr(Easy Word);/設(shè)置窗體標(biāo)題 showWidget =new ShowWidget(this);/(a) setCentralWidget(showWidget); /* 創(chuàng)建動作、菜單、工具欄的函數(shù) */ createActions(); createMenus(); createToolBars(); if(img.load(image.png) /在imageLabel對象中放置圖像 showWidget-imageLabel-s
9、etPixmap(QPixmap:fromImage(img); ,5.1.3 菜單與工具欄的實(shí)現(xiàn),1動作(Action)的實(shí)現(xiàn) 以下是實(shí)現(xiàn)基本文件操作的動作(Action)的代碼。 以下是實(shí)現(xiàn)打印文本和圖像、圖像縮放、旋轉(zhuǎn)和鏡像的動作(Action)的代碼。 2菜單(Menus)的實(shí)現(xiàn) 在實(shí)現(xiàn)了各個(gè)動作之后,需要將它們通過菜單、工具欄或快捷鍵的方式體現(xiàn)出來,以下是菜單的實(shí)現(xiàn)函數(shù)createMenus()代碼。,3工具欄(ToolBars)的實(shí)現(xiàn) 接下來實(shí)現(xiàn)相對應(yīng)的工具欄createToolBars(),主窗口的工具欄上可以有多個(gè)工具條,通常采用一個(gè)菜單對應(yīng)一個(gè)工具條的方式,也可根據(jù)需要進(jìn)行工
10、具條的劃分。 工具條是一個(gè)可移動的窗口,它可停靠的區(qū)域由QToolBar的allowAreas決定,包括Qt:LeftToolBarArea、Qt:RightToolBarArea、Qt:TopToolBarArea、Qt:BottomToolBarArea和Qt:AllToolBarAreas。默認(rèn)為Qt:AllToolBarAreas,啟動后默認(rèn)出現(xiàn)于主窗口的頂部??赏ㄟ^調(diào)用setAllowAreas()函數(shù)來指定工具條可??康膮^(qū)域,例如: fileTool-setAllowedAreas(Qt:TopToolBarArea|Qt:LeftToolBarArea); 此函數(shù)限定文件工具條只
11、可出現(xiàn)在主窗口的頂部或左側(cè)。工具條也可通過調(diào)用setMovable()函數(shù)設(shè)定可移動性,例如: fileTool-setMovable(false); 指定文件工具條不可移動,只出現(xiàn)于主窗口的頂部。,5.1.3 菜單與工具欄的實(shí)現(xiàn),5.1.3 菜單與工具欄的實(shí)現(xiàn),將程序中用到的圖片保存到該工程下的debug文件夾中,運(yùn)行程序,結(jié)果如圖5.3所示。,5.2 Qt 5文件操作功能,5.2.1 新建文件 下面將介紹如何實(shí)現(xiàn)新建一個(gè)空白文件的功能。 (1)打開“imgprocessor.h”頭文件,添加“protected slots:”變量: protected slots: void ShowNe
12、wFile(); (2)在createActions()函數(shù)的“新建動作”最后添加事件關(guān)聯(lián): connect(NewFileAction,SIGNAL(triggered(),this,SLOT(ShowNewFile(); (3)實(shí)現(xiàn)新建文件功能的函數(shù)ShowNewFile()如下: void ImgProcessor:ShowNewFile() ImgProcessor *newImgProcessor =new ImgProcessor; newImgProcessor-show(); ,5.2.1 新建文件,(4)運(yùn)行程序,單擊“文件”“新建”命令或單擊工具欄上的 按鈕,彈出新的文件編
13、輯窗口,如圖5.4所示。,5.2.2 打開文件,(1)在“imgprocessor.h”頭文件中添加“protected slots:”變量: void ShowOpenFile(); (2)在createActions()函數(shù)的“打開動作”最后添加事件關(guān)聯(lián): connect(openFileAction,SIGNAL(triggered(),this,SLOT(ShowOpenFile(); (3)實(shí)現(xiàn)打開文件功能的函數(shù)ShowOpenFile()如下: void ImgProcessor:ShowOpenFile() fileName =QFileDialog:getOpenFileNam
14、e(this); if(!fileName.isEmpty() if(showWidget-text-document()-isEmpty() loadFile(fileName); else ImgProcessor *newImgProcessor =new ImgProcessor; newImgProcessor-show(); newImgProcessor-loadFile(fileName); ,5.2.2 打開文件,其中,loadFile()函數(shù)的實(shí)現(xiàn)如下,該函數(shù)利用QFile和QTextStream完成具體讀取文件內(nèi)容的工作: void ImgProcessor:loadFi
15、le(QString filename) printf(file name:%sn,filename.data(); QFile file(filename); if(file.open(QIODevice:ReadOnly|QIODevice:Text) QTextStream textStream( ,5.2.2 打開文件,在此僅詳細(xì)說明標(biāo)準(zhǔn)文件對話框QFileDialog的getOpenFileName()靜態(tài)函數(shù)各個(gè)參數(shù)的作用,其他文件對話框類中相關(guān)的靜態(tài)函數(shù)的參數(shù)有與其類似之處。 QString QFileDialog:getOpenFileName ( QWidget* paren
16、t=0,/定義標(biāo)準(zhǔn)文件對話框的父窗口 const QString ,5.2.2 打開文件,(4)在該源文件的開始部分添加如下頭文件: #include #include #include (5)運(yùn)行程序,單擊“文件”“打開”命令或單擊工具欄上的 按鈕,彈出“打開”對話框,如圖5.5(a)所示。選擇某個(gè)文件,單擊“打開”按鈕,文本編輯框中將顯示出該文件的內(nèi)容,如圖5.5(b)所示。,5.2.3 打印文件,1文本打印 打印文本在文本編輯工作中經(jīng)常使用,下面將介紹如何實(shí)現(xiàn)文本打印功能。實(shí)現(xiàn)后的效果如圖5.6所示。,5.2.3 打印文件,具體實(shí)現(xiàn)步驟如下。 (1)在頭文件中添加“protected s
17、lots:”變量: void ShowPrintText(); (2)在createActions()函數(shù)的“打印文本動作”最后添加事件關(guān)聯(lián): connect(PrintTextAction,SIGNAL(triggered(),this,SLOT(ShowPrintText(); (3)實(shí)現(xiàn)打印文本功能的函數(shù)ShowPrintText ()如下: void ImgProcessor:ShowPrintText() QPrinter printer;/新建一個(gè)QPrinter對象 QPrintDialog printDialog(/打印 ,5.2.3 打印文件,(4)在該源文件的開始部分添加如
18、下頭文件: #include #include (5)運(yùn)行程序,單擊“文件”“打印文本”命令或工具欄上的 按鈕,彈出標(biāo)準(zhǔn)打印對話框,如圖5.6所示。,5.2.3 打印文件,2圖像打印 (1)在頭文件中添加“protected slots:”變量: void ShowPrintImage(); (2)在createActions()函數(shù)的最后添加事件關(guān)聯(lián): connect(PrintImageAction,SIGNAL(triggered(),this,SLOT(ShowPrintImage();,5.2.3 打印文件,(3)實(shí)現(xiàn)打印圖像功能的函數(shù)ShowPrintImage ()如下: voi
19、d ImgProcessor:ShowPrintImage() QPrinter printer;/新建一個(gè)QPrinter對象 QPrintDialog printDialog(/打印圖像 ,5.2.3 打印文件,(4)在該源文件的開始部分添加如下頭文件: #include (5)運(yùn)行程序,單擊“文件”“打印圖像”命令或單擊工具欄上的 按鈕,彈出標(biāo)準(zhǔn)打印對話框,顯示效果如圖5.6所示。,5.3 Qt 5圖像坐標(biāo)變換,5.3.1 縮放功能 下面將介紹如何實(shí)現(xiàn)縮放功能,具體步驟如下。 (1)在頭文件中添加“protected slots:”變量: void ShowZoomIn(); (2)在c
20、reateActions()函數(shù)的最后添加事件關(guān)聯(lián): connect(zoomInAction,SIGNAL(triggered(),this,SLOT(ShowZoomIn(); (3)實(shí)現(xiàn)圖形放大功能的函數(shù)ShowZoomIn()如下: void ImgProcessor:ShowZoomIn() if(img.isNull()/有效性判斷 return; QMatrix martix;/聲明一個(gè)QMatrix類的實(shí)例 martix.scale(2,2);/(a) img = img.transformed(martix); /重新設(shè)置顯示圖形 showWidget-imageLabel-
21、setPixmap(QPixmap:fromImage(img); ,5.3.1 縮放功能,(4)在頭文件中添加“protected slots:”變量: void ShowZoomOut(); (5)在createActions()函數(shù)的最后添加事件關(guān)聯(lián): connect(zoomOutAction,SIGNAL(triggered(),this,SLOT(ShowZoomOut(); (6)實(shí)現(xiàn)圖形縮小功能的函數(shù)ShowZoomOut()如下: void ImgProcessor:ShowZoomOut() if(img.isNull() return; QMatrix matrix; m
22、atrix.scale(0.5,0.5);/(a) img = img.transformed(matrix); showWidget-imageLabel-setPixmap(QPixmap:fromImage(img); ,5.3.1 縮放功能,(7)運(yùn)行程序,單擊“編輯”“放大”命令或單擊工具欄上的 按鈕,界面效果如圖5.7所示。,5.3.2 旋轉(zhuǎn)功能,(1)在頭文件中添加“protected slots:”變量: void ShowRotate90(); (2)在createActions()函數(shù)的最后添加事件關(guān)聯(lián): connect(rotate90Action,SIGNAL(trig
23、gered(),this,SLOT(ShowRotate90(); (3)ShowRotate90()函數(shù)的具體實(shí)現(xiàn)代碼如下: void ImgProcessor:ShowRotate90() if(img.isNull() return; QMatrix matrix; matrix.rotate(90); img = img.transformed(matrix); showWidget-imageLabel-setPixmap(QPixmap:fromImage(img); ,5.3.2 旋轉(zhuǎn)功能,(4)在頭文件中添加“protected slots:”變量: void ShowRota
24、te180(); void ShowRotate270(); (5)在createActions()函數(shù)的最后添加事件關(guān)聯(lián): connect(rotate180Action,SIGNAL(triggered(),this,SLOT(ShowRotate180(); connect(rotate270Action,SIGNAL(triggered(),this,SLOT(ShowRotate270();,5.3.2 旋轉(zhuǎn)功能,(6)ShowRotate180()、ShowRotate270()函數(shù)的具體實(shí)現(xiàn)代碼如下: void ImgProcessor:ShowRotate180() if(im
25、g.isNull() return; QMatrix matrix; matrix.rotate(180); img = img.transformed(matrix); showWidget-imageLabel-setPixmap(QPixmap:fromImage(img); void ImgProcessor:ShowRotate270() if(img.isNull() return; QMatrix matrix; matrix.rotate(270); img = img.transformed(matrix); showWidget-imageLabel-setPixmap(Q
26、Pixmap:fromImage(img); ,5.3.2 旋轉(zhuǎn)功能,(7)運(yùn)行程序,單擊“旋轉(zhuǎn)”“旋轉(zhuǎn)90”命令或單擊工具欄上的 按鈕,圖像旋轉(zhuǎn)效果如圖5.8所示。,5.3.3 鏡像功能,(1)在頭文件中添加“protected slots:”變量: void ShowMirrorVertical(); void ShowMirrorHorizontal(); (2)在createActions()函數(shù)的最后添加事件關(guān)聯(lián): connect(mirrorVerticalAction,SIGNAL(triggered(),this,SLOT(ShowMirror Vertical(); conn
27、ect(mirrorHorizontalAction,SIGNAL(triggered(),this,SLOT(ShowMirrorHorizontal();,5.3.3 鏡像功能,(3)ShowMirrorVertical ()、ShowMirrorHorizontal ()函數(shù)的具體實(shí)現(xiàn)代碼如下: void ImgProcessor:ShowMirrorVertical() if(img.isNull() return; img=img.mirrored(false,true); showWidget-imageLabel-setPixmap(QPixmap:fromImage(img);
28、 void ImgProcessor:ShowMirrorHorizontal() if(img.isNull() return; img=img.mirrored(true,false); showWidget-imageLabel-setPixmap(QPixmap:fromImage(img); ,5.3.3 鏡像功能,(4)此時(shí)運(yùn)行程序,單擊“鏡像”“橫向鏡像”命令,蝴蝶翅膀底部的陰影從右邊移到左邊,顯示效果如圖5.9所示。,5.4 Qt 5文本編輯功能,各類之間的劃分與關(guān)系如圖5.10所示。,5.4 Qt 5文本編輯功能,實(shí)現(xiàn)文本編輯的具體操作步驟如下。 (1)在頭文件中添加“pri
29、vate:”變量: QLabel *fontLabel1; /字體設(shè)置項(xiàng) QFontComboBox *fontComboBox; QLabel *fontLabel2; QComboBox *sizeComboBox; QToolButton *boldBtn; QToolButton *italicBtn; QToolButton *underlineBtn; QToolButton *colorBtn; QToolBar *fontToolBar; /字體工具欄,5.4 Qt 5文本編輯功能,(2)在頭文件中添加“protected slots:”變量: void ShowFontCom
30、boBox(QString comboStr); void ShowSizeSpinBox(QString spinValue); void ShowBoldBtn(); void ShowItalicBtn(); void ShowUnderlineBtn(); void ShowColorBtn(); void ShowCurrentFormatChanged(const QTextCharFormat ”之間添加代碼。,5.4 Qt 5文本編輯功能,(4)在該構(gòu)造函數(shù)的最后部分添加相關(guān)的事件關(guān)聯(lián): connect(fontComboBox,SIGNAL(activated(QString
31、), 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(ShowUnde
32、rlineBtn(); connect(colorBtn,SIGNAL(clicked(),this,SLOT(ShowColorBtn(); connect(showWidget-text,SIGNAL(currentCharFormatChanged(QtextChar Format,5.4 Qt 5文本編輯功能,(5)在相對應(yīng)的工具欄createToolBars()函數(shù)中添加如下代碼: /字體工具條 fontToolBar =addToolBar(Font); fontToolBar-addWidget(fontLabel1); fontToolBar-addWidget(fontCom
33、boBox); fontToolBar-addWidget(fontLabel2); fontToolBar-addWidget(sizeComboBox); fontToolBar-addSeparator(); fontToolBar-addWidget(boldBtn); fontToolBar-addWidget(italicBtn); fontToolBar-addWidget(underlineBtn); fontToolBar-addSeparator(); fontToolBar-addWidget(colorBtn);,5.4.1 設(shè)置字體,完成設(shè)置選定文字字體的函數(shù)Show
34、FontComboBox()代碼如下: void ImgProcessor:ShowFontComboBox(QString comboStr)/設(shè)置字體 QTextCharFormat fmt; /創(chuàng)建一個(gè)QTextCharFormat對象 fmt.setFontFamily(comboStr); /選擇的字體名稱設(shè)置給QTextCharFormat對象 mergeFormat(fmt); /將新的格式應(yīng)用到光標(biāo)選區(qū)內(nèi)的字符 前面介紹過,所有對于QTextDocument進(jìn)行的修改都通過QTextCursor類來完成,具體代碼如下: void ImgProcessor:mergeFormat
35、(QTextCharFormat format) QTextCursor cursor =showWidget-text-textCursor();/獲得編輯框中的光標(biāo) if(!cursor.hasSelection()/(a) cursor.select(QTextCursor:WordUnderCursor); cursor.mergeCharFormat(format);/(b) showWidget-text-mergeCurrentCharFormat(format);/(c) ,5.4.2 設(shè)置字號,設(shè)置選定文字字號大小的ShowSizeSpinBox()函數(shù)代碼如下: void
36、ImgProcessor:ShowSizeSpinBox(QString spinValue)/設(shè)置字號 QTextCharFormat fmt; fmt.setFontPointSize(spinValue.toFloat(); showWidget-text-mergeCurrentCharFormat(fmt); ,5.4.3 設(shè)置文字加粗,設(shè)置選定文字為加粗顯示的ShowBoldBtn()函數(shù)代碼如下: void ImgProcessor:ShowBoldBtn() /設(shè)置文字顯示加粗 QTextCharFormat fmt; fmt.setFontWeight(boldBtn-isC
37、hecked()?QFont:Bold:QFont: Normal); showWidget-text-mergeCurrentCharFormat(fmt); ,5.4.4 設(shè)置字體傾斜,設(shè)置選定文字為斜體顯示的ShowItalicBtn()函數(shù)代碼如下: void ImgProcessor:ShowItalicBtn()/設(shè)置文字顯示斜體 QTextCharFormat fmt; fmt.setFontItalic(italicBtn-isChecked(); showWidget-text-mergeCurrentCharFormat(fmt); ,5.4.5 文字加下畫線,在選定文字下
38、方加下畫線的ShowUnderlineBtn()函數(shù)代碼如下: void ImgProcessor:ShowUnderlineBtn()/設(shè)置文字加下畫線 QTextCharFormat fmt; fmt.setFontUnderline(underlineBtn-isChecked(); showWidget-text-mergeCurrentCharFormat(fmt); ,5.4.6 設(shè)置文字顏色,設(shè)置選定文字顏色的ShowColorBtn()函數(shù)代碼如下: void ImgProcessor:ShowColorBtn()/設(shè)置文字顏色 QColor color=QColorDialo
39、g:getColor(Qt:red,this);/(a) if(color.isValid() QTextCharFormat fmt; fmt.setForeground(color); showWidget-text-mergeCurrentCharFormat(fmt); 在頭文件中添加聲明: #include #include ,5.4.6 設(shè)置文字顏色,標(biāo)準(zhǔn)顏色對話框QColorDialog類的使用: QColor getColor ( const QColor 第1個(gè)參數(shù)指定了選中的顏色,默認(rèn)為白色。,5.4.7 設(shè)置字符格式,當(dāng)光標(biāo)所在處的字符格式發(fā)生變化時(shí)調(diào)用此槽函數(shù),函數(shù)根據(jù)
40、新的字符格式將工具欄上各個(gè)格式控件的顯示更新。 void ImgProcessor:ShowCurrentFormatChanged(const QTextCharFormat ,5.5 Qt 5排版功能,具體實(shí)現(xiàn)步驟如下。 (1)在頭文件中添加“private:”變量: QLabel *listLabel; /排序設(shè)置項(xiàng) QComboBox *listComboBox; QActionGroup *actGrp; QAction *leftAction; QAction *rightAction; QAction *centerAction; QAction *justifyAction;
41、QToolBar *listToolBar; /排序工具欄 (2)在頭文件中添加“protected slots:”變量: void ShowList(int); void ShowAlignment(QAction *act); void ShowCursorPositionChanged();,5.5 Qt 5排版功能,(3)在相對應(yīng)的構(gòu)造函數(shù)中,在語句“setCentralWidget(showWidget);”與語句“createActions();”之間添加如下代碼: /排序 listLabel =new QLabel(tr(排序); listComboBox =new QCombo
42、Box; listComboBox-addItem(Standard); listComboBox-addItem(QTextListFormat:ListDisc); listComboBox-addItem(QTextListFormat:ListCircle); listComboBox-addItem(QTextListFormat:ListSquare); listComboBox-addItem(QTextListFormat:ListDecimal); listComboBox-addItem(QTextListFormat:ListLowerAlpha); listComboB
43、ox-addItem(QTextListFormat:ListUpperAlpha); listComboBox-addItem(QTextListFormat:ListLowerRoman); listComboBox-addItem(QTextListFormat:ListUpperRoman);,5.5 Qt 5排版功能,(4)在構(gòu)造函數(shù)的最后部分添加相關(guān)的事件關(guān)聯(lián): connect(listComboBox,SIGNAL(activated(int),this,SLOT(ShowList(int); connect(showWidget-text-document(),SIGNAL(u
44、ndoAvailable(bool), redoAction,SLOT(setEnabled(bool); connect(showWidget-text-document(),SIGNAL(redoAvailable(bool), redoAction,SLOT(setEnabled(bool); connect(showWidget-text,SIGNAL(cursorPositionChanged(), this,SLOT(ShowCursorPositionChanged();,5.5 Qt 5排版功能,(5)在相對應(yīng)的工具欄createActions()函數(shù)中添加如下代碼: /排序:
45、左對齊、右對齊、居中和兩端對齊 actGrp =new QActionGroup(this); leftAction =new QAction(QIcon(left.png),左對齊,actGrp); leftAction-setCheckable(true); rightAction =new QAction(QIcon(right.png),右對齊,actGrp); rightAction-setCheckable(true); centerAction =new QAction(QIcon(center.png),居中,actGrp); centerAction-setCheckable
46、(true); justifyAction =new QAction(QIcon(justify.png),兩端對齊,actGrp); justifyAction-setCheckable(true); connect(actGrp,SIGNAL(triggered(QAction*),this,SLOT(ShowAlignment (QAction*);,5.5 Qt 5排版功能,(6)在相對應(yīng)的工具欄createToolBars()函數(shù)中添加如下代碼: /排序工具條 listToolBar =addToolBar(list); listToolBar-addWidget(listLabel); listToolBar-addWidget(listComboBox); listToolBar-addSeparator(); listToolBar-addActions(actGrp-actions();,5.5.1 實(shí)現(xiàn)段落對齊,完成對按下某個(gè)對齊按鈕的響應(yīng)用ShowAlignment()函數(shù),根據(jù)比較判斷觸發(fā)的是哪個(gè)對齊按鈕,調(diào)用QTextEdi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 神經(jīng)外科護(hù)理新進(jìn)展
- 消化內(nèi)科主治醫(yī)師工作體系
- 老年友善管理培訓(xùn)
- 我愛吃飯:大班健康飲食教育
- 護(hù)理學(xué)查房模板
- 2025年最低生活保障服務(wù)項(xiàng)目規(guī)劃申請報(bào)告
- 2025年混合二甲苯項(xiàng)目立項(xiàng)申請報(bào)告
- 2025年色精項(xiàng)目規(guī)劃申請報(bào)告
- 【蘇州】2025年江蘇蘇州太倉市事業(yè)單位招聘工作人員81人筆試歷年典型考題及考點(diǎn)剖析附帶答案詳解
- 【綿陽】2025年四川綿陽市審計(jì)局辦公室人員招聘1人筆試歷年典型考題及考點(diǎn)剖析附帶答案詳解
- 學(xué)習(xí)給復(fù)旦大學(xué)建校120周年賀信心得體會
- 2025內(nèi)蒙古包頭農(nóng)商行社會招聘10人筆試歷年典型考題及考點(diǎn)剖析附帶答案詳解
- (人教PEP版2025新教材)英語三下期末分單元復(fù)習(xí)課件
- 2025房縣事業(yè)單位筆試真題
- 2025-2030年注塑機(jī)產(chǎn)業(yè)行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報(bào)告
- 牙齒漂白治療技術(shù)操作指南
- 道路施工工藝培訓(xùn)
- 建筑工程設(shè)計(jì)合作協(xié)議書
- 谷子介紹課件
- 2025屆高考政治復(fù)習(xí)重點(diǎn)知識大全(全7冊)
- 電梯公告板制度
評論
0/150
提交評論