⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mditextedit.cpp

📁 本文件是<精通QT4编程>的配套源代码
💻 CPP
字号:
#include <QtGui>#include "mditextedit.h"int CMDITextEdit::count	= 0;CMDITextEdit::CMDITextEdit(bool untitled, const QString& fileName) :	isUntitled(untitled), 	curFile(fileName){	setAttribute(Qt::WA_DeleteOnClose);	setWindowTitle(fileName + "[*]");	connect(document(), SIGNAL(contentsChanged()), 		this, SLOT(doModified()));}CMDITextEdit::~CMDITextEdit(){	emit counted(--count);}QString CMDITextEdit::fileName(){	return curFile;	}bool CMDITextEdit::save(){	if (isUntitled) 	{         saveAs();     } else 	 {         saveFile(curFile);		 document()->setModified(false);		 setWindowModified(false);     }}bool CMDITextEdit::saveAs(){	QString fileName = 		QFileDialog::getSaveFileName(this, tr("另存为"), curFile);     if (!fileName.isEmpty())	 {		saveFile(fileName);			setCurrentFile(fileName); 	 }	 		}bool CMDITextEdit::loadFile(const QString &fileName){	QFile file(fileName);	if (!file.open(QFile::ReadOnly | QFile::Text)) {		QMessageBox::warning(this, tr("读取文件"),							tr("无法读取文件 %1:\n%2.")							.arg(fileName)							.arg(file.errorString()));		return false;	}	QTextStream in(&file);	QApplication::setOverrideCursor(Qt::WaitCursor);	setText(in.readAll());	QApplication::restoreOverrideCursor();	setCurrentFile(fileName);	return true;}bool CMDITextEdit::saveFile(const QString &fileName){	QFile file(fileName);	if (!file.open(QFile::WriteOnly | QFile::Text)) 	{		QMessageBox::warning(this, 							tr("保存文件"),							tr("无法保存文件 %1:\n%2.")							.arg(fileName)							.arg(file.errorString()));		return false;	}	QTextStream out(&file);	QApplication::setOverrideCursor(Qt::WaitCursor);	out << toPlainText();	QApplication::restoreOverrideCursor();				return true;}void CMDITextEdit::closeEvent(QCloseEvent *event){	if (maybeSave()) 		event->accept();	else 		event->ignore();}void CMDITextEdit::doModified(){	setWindowModified(document()->isModified());}bool CMDITextEdit::maybeSave(){	if(document()->isModified())	{		QMessageBox box;		box.setWindowTitle(tr("警告"));				box.setIcon(QMessageBox::Warning);		box.setText(tr("文档没有保存,是否保存?"));		box.setStandardButtons(QMessageBox::Yes 								| QMessageBox::No								| QMessageBox::Cancel);		switch(box.exec())		{		case QMessageBox::Yes :			save();			return true;		case QMessageBox::No :			return true;		case QMessageBox::Cancel :			return false;		}	}	else		return true;}void CMDITextEdit::setCurrentFile(const QString &fileName){	curFile = QFileInfo(fileName).canonicalFilePath();	isUntitled = false;	setWindowTitle(curFile + "[*]");	document()->setModified(false);	setWindowModified(false);		QSettings settings("709", "MDI example");	QStringList files = settings.value("recentFiles").toStringList();	files.removeAll(fileName);	files.prepend(fileName);	while (files.size() > MaxRecentFiles)		files.removeLast();	settings.setValue("recentFiles", files);	emit updateRecentFiels();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -