使用Qt開發文字編輯器(二):標籤頁式文件實現
Qt中相關的類
標籤頁俗稱Tab頁,Qt提供了QTableWidget用於建立基於Tab頁式的文件。使用QTableWidget,我們可以很方便得新增和刪除Tab、設定和獲取Tab頁上面的文字,設定當前的Tab。
實現
MainWindow類中維護一個QTabWidget的指標。
新建一個文字檔案時:
//新建檔案
void MainWindow::newFile()
{
newNumber = (newNumber < 0 ? 0 : newNumber);
QString fileName = tr("New %1").arg(++newNumber);
openedFiles << fileName;
NotePad *notePad = new NotePad(config);
notePad->SetNewFile(true);
int index = tabWidget->addTab(notePad, fileName);
tabWidget->setCurrentIndex(index);
addToNotePadMap(index, notePad);
}
開啟一個檔案時:
//建立新的Tab(用於開啟檔案)
void MainWindow::newTab(const QString& fileName, QFile& file)
{
int index = 0;
NotePad *notePad = findNewFile(index);
if(notePad == NULL)
{
notePad = new NotePad(config);
index = tabWidget->addTab(notePad, QFileInfo(fileName).fileName());
addToNotePadMap(index, notePad);
}
else
{
notePad->SetNewFile(false);
tabWidget-> setTabText(index, QFileInfo(fileName).fileName());
openedFiles.removeAt(index);
newNumber--;
}
openedFiles << fileName;
QByteArray data = file.readAll();
notePad->setPlainText(QString::fromLocal8Bit(data));
tabWidget->setCurrentIndex(index);
setWindowTitle(QFileInfo(fileName).fileName());
}
關閉一個檔案時:
//關閉檔案(指定檔案)
void MainWindow::fileClose(int index)
{
if(!shouldCloseFile())
{
return;
}
if (maybeSave(index))
{
if (openedFiles.count() == 1)
{
openedFiles.clear();
QString fileName = "New 1";
openedFiles << fileName;
mapNotePads[0]->setPlainText("");
mapNotePads[0]->SetNewFile(true);
tabWidget->setTabText(0, fileName);
setWindowTitle(fileName);
newNumber = 1;
}
else
{
openedFiles.removeAt(index);
tabWidget->removeTab(index);
removeFromNotePadMap(index);
newNumber--;
}
}
}
使用addTab來新增一個tab,setTabText設定tab頁上顯示的文字,removeTab移除tab,setCurrentIndex設定當前的tab。
原始碼的下載地址:http://download.csdn.net/detail/zxywd/9246219
相關推薦
使用Qt開發文字編輯器(二):標籤頁式文件實現
Qt中相關的類 標籤頁俗稱Tab頁,Qt提供了QTableWidget用於建立基於Tab頁式的文件。使用QTableWidget,我們可以很方便得新增和刪除Tab、設定和獲取Tab頁上面的文字,設定當前的Tab。 實現 MainWindow類中維護
用函數式編程,從0開發3D引擎和編輯器(二):函數式編程準備
cat null 存在 處理程序 字符串 優勢 attr 互轉 defined 大家好,本文介紹了本系列涉及到的函數式編程的主要知識點,為正式開發做好了準備。 函數式編程的優點 1.粒度小 相比面向對象編程以類為單位,函數式編程以函數為單位,粒度更小。 正所謂: 我只想要
Vue專案中使用ueditor富文字編輯器(二)
vue專案打包後引入的ueditor富文字編輯器,資源載入不正確 如下圖:一個個解決: 1:ueditor.css ①如果用的是ueditor.all.js,在29336行修改如下: ②如果用的是ueditor.all.mai
JAVA寫文字編輯器(二)
這一章我們來處理一下JMenuBar裡的item的事件響應,首先從最簡單的item關於開始。 為什麼說這個簡單,因為它需要完成的功能很少,只是出來一個對話方塊或者視窗,然後顯示一個文字。 首先,我們按照執行軟體的順序來寫程式碼,我們
多邊形編輯器(二)
自上次之後,過去好久了。。寫了個雛形後,還有很多地方沒有完善,最近抽空又把這個工具完善了一下,至少我感覺達到了可以用一用的程度了。很自私的加入了一個打賞頁面,歡迎各位客官打賞噢。。 完善之後工具的使用方法如下: 1. 新建一個
【洛谷 P4008】 [NOI2003]文字編輯器 (Splay)
題目連結 \(Splay\)先練到這吧(好像還有道毒瘤的維護數列誒,算了吧) 記錄下游標的編號,維護就是\(Splay\)基操了。 另外資料有坑,資料是\(Windows\)下生成了,回車是'\n\r',我就被坑了。 #include <cstdio> #include <algorith
富文字編輯器(UEditor)的使用
富文字編輯器(UEditor) 在平時開發Java Web專案的時候,往往會使用第三方外掛來幫助我們更快的實現功能。 這裡教大家使用百度開源的富文字編輯器(UEditor)來幫助我們更好的編寫文字。 官網下載地址 這裡下載最新版
SpringBoot整合富文字編輯器(UEditor)
UEditro是一款比較好用的富文字編輯器,所謂的富文字編輯器就是和伺服器互動的資料不是普通的字串檔案,而是一些內容包含比較廣的字串,一般是指的html頁面,目前比較好用的是百度的UEditor,到官方網站下載: http://ueditor.baidu.co
百度富文字編輯器(ueditor)自定義上傳介面(路徑)
只針對 1.4.3 jsp 版本其他版本估計也差不多,剛開始上傳圖片各種錯誤,又是配路徑又是導jar包啥的,這都不說了,作為一個前端真的不太會玩這些java的東西,剛好同事搞過,把他的搬來用,他的版本很低1.3.6,高了半天上傳上去是自定義的一個資料夾,就存在t
unity 編輯器(二)之彈出視窗
彈出對話方塊首先要需要新增選單欄按鈕,來調出視窗 彈出對話方塊 [MenuItem("Testbtn/windowtest", false,2)] staticvoidWindow() { //第一個引數為視窗名字,第二個為按鈕名字預設為create wi
富文字編輯器(php)
首先去ueditor的官網下載PHP版本的檔案,網站地址:http://ueditor.baidu.com/website/download.html 然後解壓出來 改名為ueditor 並放到專案檔案中。 前端程式碼: 1、引入ueditor的相關檔案 <script src="ueditor
Linux作業系統之vi編輯器(二)
1.vi進入及設定 進入vi編輯器 vi file1(file1可以是已經存在的檔案,也可以是新建的檔案) 從編輯模式進入命令模式 Esc 設定編輯器自動對齊 :set ai 取消編輯器自動對齊 :set noai 同時編輯多個檔案 :%vi file1 file2 file3 …
模擬Scratch的視覺化指令碼編輯器(二)
本次以Markdown流程圖Flow為例,來說明Block擴充套件方法。 Created with Raphaël 2.2.0開始程式條件程式程式結束程式yesno 流程圖主要有6種Block #開始 start st=>start: 開始 #結束 en
Vue實現音樂播放器(七):輪播圖組件(二)
item [] tin neo pic () client link ons 輪播圖組件 <template> <div class="slider" ref="slider"> <div class="slider-
Tkinter 佈局管理器(二):grid
Tkinter 佈局管理器之grid pack、grid 和 place 均用於管理同在一個父元件下的所有元件的佈局,其中: pack 是按新增順序排列元件 grid 是按行/列形式排列元件 place 則允許程式設計師指定元件的大小和位置 何時使用 grid
Go遊戲伺服器開發的一些思考(二):綜合考察(上)
對Go做體檢 Go語言在遊戲伺服器方向的開發,起步比較晚。有必要考察下使用Go來實現,該怎麼去做,會遇到什麼問題,以及怎麼克服。這裡把使用Go語言開發MMO RPG遊戲作為考察物件,對Go做一次體檢。 MMO RPG最小功能清單 首先,羅列下開發一個M
使用gensim和sklearn搭建一個文字分類器(一):流程概述
總的來講,一個完整的文字分類器主要由兩個階段,或者說兩個部分組成:一是將文字向量化,將一個字串轉化成向量形式;二是傳統的分類器,包括線性分類器,SVM, 神經網路分類器等等。 之前看的THUCTC的技術棧是使用 tf-idf 來進行文字向量化,使用卡方校驗(c
網路遊戲《叢林戰爭》開發與學習之(二):粘包分包現象以及服務端解析資料
1. 粘包和分包 粘包和分包是利用Socket在TCP協議下內部的優化機制。粘包指的是傳送資料比較頻繁,但資料量較少,此時客戶端不會直接將資料包傳送給伺服器,而是會與其它的資料包進行一個結合,例如遊戲中的位置資訊就是屬於頻繁傳送但資料量小的資訊,此時如果每條資料都S
C++ STL開發溫習與總結(二): 2.C++儲存技術
C++ STL開發溫習與總結(二):2.C++儲存技術 使用了多年C++,沒有系統的溫習總結過,所以準備溫習《C++STL程式設計師開發指南》,本系列篇章將會是溫習總結該書本概念和技術。 本節討論的C++儲存技術保局哦C++儲存型別,C++儲存
Flask開發輕部落格(二):Flask-模板
作者:chen_h 微訊號 & QQ:862251340 微信公眾號:coderpai 目錄 上節回顧 如果你依照上一章的話,你應當有一個完全工作的簡單的 web 應用程式,我們專案的檔案結構如下(前