蛋疼的QTextEdit刪除 右鍵選單

2021-07-28 04:21:17 字數 1219 閱讀 5546

2023年3月11日修改:

qtextedit的刪除功能,可以用editer->document()->removeselectedtext()來實現 

對於qt程式設計。qtextedit是乙個很普通的類,這個類提供了基本的文字編輯,對於一般的文字編輯,這個類提供了一系列槽和函式來實現諸如複製,剪下,undo,redo等操作,但缺有2個灰常蛋疼的地方

對於這樣乙個很基本的文字操作,qtextedit缺沒有提供對應的槽或者函式(也許有,但我確實沒找到。。),翻遍了各種文件,qt確實有這樣乙個函式removeselectedtext()來提供刪除功能,這個是

qtextcontrl類的函式,如果查詢qtextedit的標頭檔案的源**就可以找到這個qtextcontrl類,他是qtextedit的乙個友元類。。

對於乙個qtextedit來說,如果直接右鍵彈出右鍵選單,上面確實有有delete這個選項,但我實在不知道這個是怎麼實現的,所以為了實現刪除功能,我採用了乙個比較近似的辦法,子類化qtextedit,然後新增乙個槽

void deleteselected()

說明 第乙個函式是移動游標到前乙個位置同時選中游標移動過程中經過的文字(函式的引數是2個列舉,含義可以查詢文件),當用滑鼠拖動游標移動,假如從位置a滑動到b,這樣就選中了從a到b之間的文字,然後這個函式的作用就是讓游標從b位置回到a位置,同時仍然保持a到b之間的文字被選中

第二個函式就是剪下掉(a到b位置之間的文字)(這會帶來一定負作用,下述

第三個設定焦點

通過這三個函式的相互作用就可以近似的實現刪除功能,為什麼說近似呢,就是第二個函式cut(),用他「刪除」的文字會進入剪下板。。。

以windows自帶的記事本為例,操作 :網頁複製一段文字==>刪除記事本原有的文字==>貼上

此時出現在記事本上的文字是從網頁上複製下來的內容

子類化的qtextedit執行相同的操作 :

網頁複製一段文字==>刪除記事本原有的文字==>貼上

這時候出現在編輯框裡的是 剛被刪除的原有的文字。。。

~~~~~~華麗的分割線~~~~~~

然後是qtextedit的另乙個問題,上面說到的右鍵選單是英文的,但很神奇的是這個右鍵選單我無法通重載入.qm檔案來翻譯(當然也許是我的方法不對),所以我最後只能通過重新實現右鍵選單來達到翻譯的功能

ps:另乙個主要的問題是,預設的右鍵選單不一定能實現程式要求的功能

void contextmenu(qcontextment* event)

蛋疼的遞迴

幾個經典的遞迴場景 1.斐波那契 2.二叉樹的周遊 深度 前中後序 3.全排列問題 非簡單的全排列 允許字母重複 4.尋找滿足條件的n個數 第乙個的變種 跳台階 題目 乙個台階總共有n 級,如果一次可以跳1 級,也可以跳 2 級。求總共有多少總跳法,並分析演算法的時間複雜度。第二個要複習下非遞迴的寫...

令人蛋疼的ByteArray

最近做的乙個專案需要上傳比較多的到伺服器,伺服器限制大小是2m,在專案中,的大小都是有控制的,為100k 在互動中,返回給我 http status 413 上傳實體過大,超過伺服器大小。這讓我很糾結,我傳給伺服器的是二進位製流 bytearray 然後想當然的去計算,上傳的在10張以內,每張大小都...

dwr的蛋疼問題

最近在使用dwr,與之前相比 除了讓人非常蛋疼的問題,先描述如下 第乙個問題是伺服器向客戶端推送的時候,1 browser.withcurrentpage new runnable 13 使用該方法推送給當前的session使用,可是我之前測試總是在全部推送完畢後,才在頁面做接收,也就是看不到 一條...