?? mytextedit.cpp
字號:
#include <QtGui>
#include "mytextedit.h"
MyTextEdit::MyTextEdit(QWidget *parent)
:QTextEdit(parent)
{
highlighter=0;
viewportWidget=0;
connect(document(), SIGNAL(contentsChanged()),
this, SLOT(documentWasModified()));
connect(this, SIGNAL(cursorPositionChanged () ),this, SLOT(MyCursorPositionChanged()));
setupHighlight();
bLightLine=true;
//setLineWrapColumnOrWidth(200);
}
void MyTextEdit::newFile()
{
static int sequenceNumber = 1;
isUntitled = true;
curFile = tr("document%1.txt").arg(sequenceNumber++);
//setWindowTitle(curFile + "[*]");
}
bool MyTextEdit::loadFile(const QString &fileName)
{
QFile file(fileName);
if (!file.open(QFile::ReadOnly | QFile::Text)) {
QMessageBox::warning(this, qApp->applicationName(),
tr("Cannot read file %1:\n%2.")
.arg(fileName)
.arg(file.errorString()));
return false;
}
QTextStream in(&file);
QApplication::setOverrideCursor(Qt::WaitCursor);
setPlainText(in.readAll());
QApplication::restoreOverrideCursor();
setCurrentFile(fileName);
return true;
}
bool MyTextEdit::save()
{
if (isUntitled) {
return saveAs();
} else {
return saveFile(curFile);
}
}
bool MyTextEdit::saveAs()
{
QString fileName = QFileDialog::getSaveFileName(this, tr("Save As"),
curFile);
if (fileName.isEmpty())
return false;
return saveFile(fileName);
}
bool MyTextEdit::saveFile(const QString &fileName)
{
QFile file(fileName);
if (!file.open(QFile::WriteOnly | QFile::Text)) {
QMessageBox::warning(this, tr("MDI"),
tr("Cannot write file %1:\n%2.")
.arg(fileName)
.arg(file.errorString()));
return false;
}
QTextStream out(&file);
QApplication::setOverrideCursor(Qt::WaitCursor);
out << toPlainText();
QApplication::restoreOverrideCursor();
setCurrentFile(fileName);
return true;
}
QString MyTextEdit::userFriendlyCurrentFile()
{
return strippedName(curFile);
}
void MyTextEdit::closeEvent(QCloseEvent *event)
{
if (maybeSave()) {
event->accept();
} else {
event->ignore();
}
}
void MyTextEdit::documentWasModified()
{
// setWindowModified(document()->isModified());
}
bool MyTextEdit::maybeSave()
{
if (document()->isModified()) {
int ret = QMessageBox::warning(this, tr("MDI"),
tr("'%1' has been modified.\n"
"Do you want to save your changes?")
.arg(userFriendlyCurrentFile()),
QMessageBox::Yes | QMessageBox::Default,
QMessageBox::No,
QMessageBox::Cancel | QMessageBox::Escape);
if (ret == QMessageBox::Yes)
return save();
else if (ret == QMessageBox::Cancel)
return false;
}
return true;
}
void MyTextEdit::setCurrentFile(const QString &fileName)
{
curFile = QFileInfo(fileName).canonicalFilePath();
// document()->setModified(false);
// setWindowModified(false);
// setWindowTitle(userFriendlyCurrentFile() + "[*]");
}
QString MyTextEdit::strippedName(const QString &fullFileName)
{
return QFileInfo(fullFileName).fileName();
}
QString MyTextEdit::getSql()
{
QString sql;
//QTextDocument *doc=document();
QTextCursor tc=textCursor();
if(tc.hasSelection())
sql=tc.selection ().toPlainText();
else
sql=toPlainText();
return sql;
}
void MyTextEdit::MyCursorPositionChanged()
{
if(!bLightLine)
return;
viewport()->update();
}
void MyTextEdit::paintEvent( QPaintEvent * event )
{
//QTextEdit::paintEvent(event);
if(bLightLine)
{
QPainter p(viewport());
p.save();
//p.setCompositionMode((QPainter::CompositionMode)1);
QRect rect=cursorRect();
rect.setLeft(0);
rect.setRight(size().width());
QColor color=QColor(100,255,255);
QBrush brush=QBrush(color);
p.setBrush(brush);
p.setPen(color);
p.setBackground(brush);
p.drawRect(rect);
p.setPen(QColor(0,0,0));
p.restore();
}
QTextEdit::paintEvent(event);
}
void MyTextEdit::setLightLine(bool light)
{
bLightLine=light;
}
void MyTextEdit::setupHighlight(bool bHigh)
{
//QApplication::setOverrideCursor(Qt::WaitCursor);
if(bHigh)
{
if(highlighter)
delete highlighter;
highlighter = new Highlighter(this->document());
}
else
{
delete highlighter;
highlighter=0;
}
//QApplication::restoreOverrideCursor();
}
void MyTextEdit::hideEvent ( QHideEvent * event )
{
//qWarning("hide");
emit onShow(false);
}
void MyTextEdit::showEvent ( QHideEvent * event )
{
//qWarning("show");
emit onShow(true);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -