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

📄 mytextedit.cpp

📁 跨平台,多数据库查看编辑和查询工具,平台支持windows,linux,数据库支持oracle,odbc,mysql,slite等
💻 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 + -