亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

功能實(shí)現(xiàn)

在QMainWindow中,菜單與工具欄都與QAction類(lèi)有密切的關(guān)系,實(shí)現(xiàn)菜單和工具欄主要是對(duì)動(dòng)作的實(shí)現(xiàn)。

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

動(dòng)作(QAction)實(shí)現(xiàn)

設(shè)計(jì)到的動(dòng)畫(huà)包括了以下幾個(gè)功能:

打開(kāi)、新建、退出、復(fù)制、剪切、粘貼

對(duì)應(yīng)的動(dòng)作類(lèi),如下面表格中介紹,后續(xù)都是用類(lèi)指針的方式說(shuō)明:

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

在文本編輯器中一般會(huì)用到這幾項(xiàng)功能,我們可以對(duì)每個(gè)動(dòng)作功能進(jìn)行快捷鍵綁定,接下來(lái)就以“打開(kāi)文件動(dòng)作”做詳細(xì)說(shuō)明吧~

"打開(kāi)"動(dòng)作

創(chuàng)建一個(gè)打開(kāi)動(dòng)作

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

在創(chuàng)建“打開(kāi)”動(dòng)作的同時(shí)也指定了當(dāng)前動(dòng)作使用的圖標(biāo)、名稱以及父窗口

設(shè)置快捷鍵

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

當(dāng)前“打開(kāi)”動(dòng)作的組合鍵是Ctrl+O

設(shè)置提示信息

m_pActionOpenFile->setStatusTip(QStringLiteral("打開(kāi)一個(gè)文件"));

類(lèi)似于控件的setToolTips功能。

當(dāng)鼠標(biāo)光標(biāo)移動(dòng)到此動(dòng)作對(duì)應(yīng)的菜單條目或工具欄按鈕上時(shí),在狀態(tài)欄上會(huì)顯示“打開(kāi)一個(gè)文件”的提示。

有的人會(huì)問(wèn)道:在創(chuàng)建打開(kāi)動(dòng)作實(shí)例的時(shí)候,不傳入圖片可以嗎?

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

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

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

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

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

什么是菜單呢?

就拿Notepad++文本編輯器來(lái)說(shuō)明下

紅色框標(biāo)注的區(qū)域是菜單欄,藍(lán)色框標(biāo)注的區(qū)域是工具欄

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

功能對(duì)應(yīng)表如下:

名稱類(lèi)名功能
文件m_pMenuFile打開(kāi)一個(gè)新文件;創(chuàng)建一個(gè)新文件;退出
縮放m_pMenuZoom復(fù)制文件;剪切文件;粘貼文件;放大;縮小
旋轉(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ù),就可以在菜單欄中插入一個(gè)新菜單fileMenu。

其中,fileMenu就是一個(gè)QMenu類(lèi)對(duì)象。

addAction:可以在菜單條目中添加“打開(kāi)”、“新建”的動(dòng)作,如下圖所示:

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

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

在主窗口的工具欄上可以存在多個(gè)工具條,一般情況下一個(gè)菜單對(duì)應(yīng)一個(gè)工具條,在實(shí)際應(yīng)用中也可以根據(jù)項(xiàng)目需求進(jìn)行分配。

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

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

就拿文件工具條來(lái)舉例吧

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

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

m_pToolFile->setMovable(false);

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

展示區(qū)域

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

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

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

實(shí)際的展示效果:

實(shí)際的代碼操作:

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

小結(jié)(一)

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

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

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

相關(guān)文章

  • 迷宮游戲控制臺(tái)版C++代碼

    迷宮游戲控制臺(tái)版C++代碼

    這篇文章主要為大家詳細(xì)介紹了迷宮游戲控制臺(tái)版C++代碼,可以調(diào)整大小的迷宮游戲,給定迷宮的入口,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • C語(yǔ)言超詳細(xì)文件操作基礎(chǔ)上篇

    C語(yǔ)言超詳細(xì)文件操作基礎(chǔ)上篇

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言的文件操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • C++基本用法實(shí)踐之智能指針詳解

    C++基本用法實(shí)踐之智能指針詳解

    為了減少手動(dòng)管理內(nèi)存帶來(lái)的困擾,c++提出了智能指針,可以幫助我們進(jìn)行內(nèi)存管理,下面小編就來(lái)和大家簡(jiǎn)單聊聊C++中智能指針的基本用法吧
    2023-07-07
  • C++類(lèi)與對(duì)象的重點(diǎn)知識(shí)點(diǎn)詳細(xì)分析

    C++類(lèi)與對(duì)象的重點(diǎn)知識(shí)點(diǎn)詳細(xì)分析

    類(lèi)和對(duì)象是兩種以計(jì)算機(jī)為載體的計(jì)算機(jī)語(yǔ)言的合稱。對(duì)象是對(duì)客觀事物的抽象,類(lèi)是對(duì)對(duì)象的抽象。類(lèi)是一種抽象的數(shù)據(jù)類(lèi)型;變量就是可以變化的量,存儲(chǔ)在內(nèi)存中—個(gè)可以擁有在某個(gè)范圍內(nèi)的可變存儲(chǔ)區(qū)域
    2023-02-02
  • C++開(kāi)發(fā)之CRC校驗(yàn)實(shí)例詳解

    C++開(kāi)發(fā)之CRC校驗(yàn)實(shí)例詳解

    這篇文章主要介紹了C++開(kāi)發(fā)之CRC校驗(yàn)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • 詳解C++-二階構(gòu)造模式、友元

    詳解C++-二階構(gòu)造模式、友元

    這篇文章主要介紹了C++-二階構(gòu)造模式、友元,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 淺談2路插入排序算法及其簡(jiǎn)單實(shí)現(xiàn)

    淺談2路插入排序算法及其簡(jiǎn)單實(shí)現(xiàn)

    這篇文章主要介紹了淺談2路插入排序算法及其簡(jiǎn)單實(shí)現(xiàn),雖算不上是常用的排序方法,但在數(shù)據(jù)庫(kù)等方面依然有用上的機(jī)會(huì),需要的朋友可以參考下
    2015-08-08
  • C++實(shí)現(xiàn)簡(jiǎn)單信息管理系統(tǒng)

    C++實(shí)現(xiàn)簡(jiǎn)單信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡(jiǎn)單信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C語(yǔ)言實(shí)現(xiàn)的猴子分桃問(wèn)題算法解決方案

    C語(yǔ)言實(shí)現(xiàn)的猴子分桃問(wèn)題算法解決方案

    這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)的猴子分桃問(wèn)題算法,較為詳細(xì)的分析了猴子分桃問(wèn)題算法的原理與通過(guò)遞歸算法解決問(wèn)題的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2016-10-10
  • FFmpeg實(shí)戰(zhàn)之利用ffplay實(shí)現(xiàn)自定義輸入流播放

    FFmpeg實(shí)戰(zhàn)之利用ffplay實(shí)現(xiàn)自定義輸入流播放

    ffplay是FFmpeg提供的一個(gè)極為簡(jiǎn)單的音視頻媒體播放器,可以用于音視頻播放、可視化分析。本文將利用ffplay實(shí)現(xiàn)自定義輸入流播放,需要的可以參考一下
    2022-12-12

最新評(píng)論