最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Qt實現(xiàn)文本編輯器(一)

 更新時間:2022年01月25日 09:06:40   作者:中國好公民st  
在Qt中QMainWindow是一個為用戶提供主窗口程序的類,包含了:菜單欄、工具欄、錨接部件、狀態(tài)欄以及一個中部件。本文將利用QMainWindow制作一個文本編輯器,感興趣的可以試一試

在Qt中QMainWindow是一個為用戶提供主窗口程序的類,包含了:菜單欄、工具欄、錨接部件、狀態(tài)欄以及一個中部件。今天我就來通過實現(xiàn)一個簡單的文本編輯器講解下對QMainWindow的各種功能講解。

想要完整的實現(xiàn)一個編輯器,所需要的功能還是比較全面的。今天主要來講解如何構(gòu)建文本編輯器,包括了:菜單欄、工具欄以及文本編輯區(qū)域。

功能實現(xiàn)

在QMainWindow中,菜單與工具欄都與QAction類有密切的關系,實現(xiàn)菜單和工具欄主要是對動作的實現(xiàn)。

QAction類為用戶提供了一個統(tǒng)一的命令接口,無論是從菜單觸發(fā)還是從工具欄觸發(fā),甚至是通過快捷鍵觸發(fā)都調(diào)用同樣的操作接口,達到同樣的目的。

動作(QAction)實現(xiàn)

設計到的動畫包括了以下幾個功能:

打開、新建、退出、復制、剪切、粘貼

對應的動作類,如下面表格中介紹,后續(xù)都是用類指針的方式說明:

動作類名功能組合鍵
打開m_pActionOpenFile打開一個指定的文件,從本地程序中打開Ctrl+O
新建m_pActionNewFile彈出新的文件編輯窗口Ctrl+N
退出m_pActionExit退出Ctrl+Q
復制m_pActionCopy復制Ctrl+C
剪切m_pActionCut剪切Ctrl+X
粘貼m_pActionPaste粘貼Ctrl+V

在文本編輯器中一般會用到這幾項功能,我們可以對每個動作功能進行快捷鍵綁定,接下來就以“打開文件動作”做詳細說明吧~

"打開"動作

創(chuàng)建一個打開動作

m_pActionOpenFile = new QAction(QIcon(":/QtTextEditor/image/open.jpg"), QStringLiteral("打開"), this);

在創(chuàng)建“打開”動作的同時也指定了當前動作使用的圖標、名稱以及父窗口

設置快捷鍵

m_pActionOpenFile->setShortcut(tr("Ctrl+O"));

當前“打開”動作的組合鍵是Ctrl+O

設置提示信息

m_pActionOpenFile->setStatusTip(QStringLiteral("打開一個文件"));

類似于控件的setToolTips功能。

當鼠標光標移動到此動作對應的菜單條目或工具欄按鈕上時,在狀態(tài)欄上會顯示“打開一個文件”的提示。

有的人會問道:在創(chuàng)建打開動作實例的時候,不傳入圖片可以嗎?

當然沒問題啦,在創(chuàng)建動作時,不傳入圖標時,這類動作通常只在菜單中出現(xiàn),而不在工具欄上面使用。這是唯一的區(qū)別

剩下的其他動作我們可以也按照同樣的方式進行設置,具體的組合鍵可以參照我的,也可以隨意發(fā)揮。

菜單(Menus)實現(xiàn)

在實現(xiàn)了各個動作之后,直接展示能被我們看到嗎?

如果不清楚的可以運行下,結(jié)果發(fā)現(xiàn)是不可以被看到的。是需要將它們通過菜單、工具欄或者快捷鍵的方式體現(xiàn)出來。

什么是菜單呢?

就拿Notepad++文本編輯器來說明下

紅色框標注的區(qū)域是菜單欄,藍色框標注的區(qū)域是工具欄

接下來,我們就來實現(xiàn)菜單欄上的功能,這里只是簡單的列舉了幾項,包括:文件、縮放、旋轉(zhuǎn)、鏡像

功能對應表如下:

名稱類名功能
文件m_pMenuFile打開一個新文件;創(chuàng)建一個新文件;退出
縮放m_pMenuZoom復制文件;剪切文件;粘貼文件;放大;縮小
旋轉(zhuǎn)m_pMenuRotate90°旋轉(zhuǎn);180°旋轉(zhuǎn);270°旋轉(zhuǎn)
鏡像m_pMenuMirror垂直鏡像;水平鏡像

菜單創(chuàng)建

m_pMenuFile = menuBar()->addMenu(QStringLiteral("文件"));
m_pMenuFile->addAction(m_pActionOpenFile);
m_pMenuFile->addAction(m_pActionNewFile);
m_pMenuFile->addSeparator();

就以文件菜單為例,不采用new的方式,直接調(diào)用QMainWindow的menuBar()函數(shù)就可以得到主窗口的菜單欄指針,然后,再調(diào)用QMenuBar::addMenu()函數(shù),就可以在菜單欄中插入一個新菜單fileMenu。

其中,fileMenu就是一個QMenu類對象。

addAction:可以在菜單條目中添加“打開”、“新建”的動作,如下圖所示:

像:縮放菜單、旋轉(zhuǎn)菜單、鏡像菜單實現(xiàn)方法類似,這里就不一一說明了。

工具欄(ToolBars)實現(xiàn)

在主窗口的工具欄上可以存在多個工具條,一般情況下一個菜單對應一個工具條,在實際應用中也可以根據(jù)項目需求進行分配。

在這里我為了簡單起見,按照菜單的數(shù)量劃分了工具條:文件工具條、編輯工具條、旋轉(zhuǎn)工具條、鏡像工具條

紅色框區(qū)域就是創(chuàng)建的四個工具條,其中還標注了兩個藍色框,這兩個藍色框中的內(nèi)容就是在設置動作時,寫入的提示信息。

就拿文件工具條來舉例吧

m_pToolFile = addToolBar("File");
m_pToolFile->addAction(m_pActionOpenFile);
m_pToolFile->addAction(m_pActionNewFile);

在默認的創(chuàng)建工具條的屬性中,是可以隨意拖動工具條的,想要禁止拖動可以如下設置:

m_pToolFile->setMovable(false);

創(chuàng)建好了菜單以及工具欄之后,中間剩下的區(qū)域就是我們文本編輯以及展示的區(qū)域了。

展示區(qū)域

展示區(qū)域主要是進行編寫工作,在這里我們可以采用QTextEdit編輯控件來處理。

那么,如何確定該編輯框的展示區(qū)域呢?

在QMainWindow主窗口中有一個叫做中心窗口部件:Central Widget,創(chuàng)建了QTextEdit控件后,將該控件指針賦值到中心窗口部件就可以實現(xiàn)編輯區(qū)域在中間展示的效果了

實際的展示效果:

實際的代碼操作:

m_editContent = new QTextEdit(this);
setCentralWidget(m_editContent);

小結(jié)(一)

看到這里,就可以構(gòu)建出整體的編輯頁面了,包括了三個部分:菜單欄區(qū)域、工具欄區(qū)域、編輯區(qū)域

那么,下一章節(jié)我們繼續(xù)介紹文本編輯器功能

到此這篇關于Qt實現(xiàn)文本編輯器(一)的文章就介紹到這了,更多相關Qt文本編輯器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C/C++左旋字符串實現(xiàn)代碼舉例

    C/C++左旋字符串實現(xiàn)代碼舉例

    在C/C++語言中沒有專門的字符串變量,通常用字符數(shù)組來存放字符串,下面這篇文章主要給大家介紹了關于C/C++左旋字符串實現(xiàn)的相關資料,需要的朋友可以參考下
    2023-12-12
  • 一文掌握scanf的用法實例小結(jié)

    一文掌握scanf的用法實例小結(jié)

    scanf的基本用法除了常規(guī)的輸入操作外還有一些特殊的用法,使用這些用法可以很方便的在輸入中讀取想要的數(shù)據(jù),這篇文章主要介紹了scanf的用法,需要的朋友可以參考下
    2023-12-12
  • C語言代碼實現(xiàn)簡單2048游戲

    C語言代碼實現(xiàn)簡單2048游戲

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)2048游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • C語言順序表的實現(xiàn)代碼

    C語言順序表的實現(xiàn)代碼

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)順序表的實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • C語言實現(xiàn)銷售管理系統(tǒng)課程設計

    C語言實現(xiàn)銷售管理系統(tǒng)課程設計

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)銷售管理系統(tǒng)課程設計,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • c_str()的用法詳細解析

    c_str()的用法詳細解析

    c_str()就是把string類對象轉(zhuǎn)換成和c兼容的char *類型。這是為了與c語言兼容,在c語言中沒有string類型,故必須通過string類對象的成員函數(shù)c_str()把string 對象轉(zhuǎn)換成c中的字符串樣式
    2013-09-09
  • C語言實現(xiàn)學生籍貫信息記錄簿

    C語言實現(xiàn)學生籍貫信息記錄簿

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)學生籍貫信息記錄簿,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C++數(shù)據(jù)結(jié)構(gòu)的隊列詳解

    C++數(shù)據(jù)結(jié)構(gòu)的隊列詳解

    這篇文章主要為大家介紹了C++數(shù)據(jù)結(jié)構(gòu)的隊列,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • C語言數(shù)據(jù)結(jié)構(gòu)單鏈表接口函數(shù)全面講解教程

    C語言數(shù)據(jù)結(jié)構(gòu)單鏈表接口函數(shù)全面講解教程

    這篇文章主要為大家介紹了C語言數(shù)據(jù)結(jié)構(gòu)單鏈表所有接口函數(shù)的全面講解教程,有需要朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2021-10-10
  • C++中 map的基本操作

    C++中 map的基本操作

    map是一類關聯(lián)式容器。接下來通過本文給大家分享c++中的map基本操作,需要的朋友參考下
    2017-05-05

最新評論

锡林浩特市| 麻江县| 双城市| 沾益县| 广安市| 武汉市| 太仆寺旗| 克拉玛依市| 南雄市| 民县| 江西省| 光山县| 华池县| 桂阳县| 久治县| 遵化市| 桐柏县| 深水埗区| 保靖县| 珠海市| 河源市| 永福县| 石景山区| 玛多县| 安龙县| 宜州市| 闸北区| 西青区| 灵山县| 阜宁县| 辽阳市| 得荣县| 株洲市| 泰宁县| 白河县| 汕尾市| 门源| 贺兰县| 英德市| 姜堰市| 崇礼县|