欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

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

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

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

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

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

動(dòng)作類名功能組合鍵
打開m_pActionOpenFile打開一個(gè)指定的文件,從本地程序中打開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)行快捷鍵綁定,接下來就以“打開文件動(dòng)作”做詳細(xì)說明吧~

"打開"動(dòng)作

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

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

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

設(shè)置快捷鍵

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

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

設(shè)置提示信息

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

類似于控件的setToolTips功能。

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

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

當(dāng)然沒問題啦,在創(chuàng)建動(dòng)作時(shí),不傳入圖標(biāo)時(shí),這類動(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)是不可以被看到的。是需要將它們通過菜單、工具欄或者快捷鍵的方式體現(xiàn)出來。

什么是菜單呢?

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

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

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

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

名稱類名功能
文件m_pMenuFile打開一個(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類對(duì)象。

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

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

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

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

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

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

就拿文件工具條來舉例吧

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)行編寫工作,在這里我們可以采用QTextEdit編輯控件來處理。

那么,如何確定該編輯框的展示區(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)建出整體的編輯頁面了,包括了三個(gè)部分:菜單欄區(qū)域、工具欄區(qū)域、編輯區(qū)域

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    這篇文章主要介紹了C語言實(shí)現(xiàn)的猴子分桃問題算法,較為詳細(xì)的分析了猴子分桃問題算法的原理與通過遞歸算法解決問題的相關(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è)極為簡單的音視頻媒體播放器,可以用于音視頻播放、可視化分析。本文將利用ffplay實(shí)現(xiàn)自定義輸入流播放,需要的可以參考一下
    2022-12-12

最新評(píng)論