• 大小: 13.15MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-07-21
  • 语言: 其他
  • 标签: Qt5  codeEditor  Demo  

资源简介

一个简单的代码编辑器 支持文本高亮代码字符自动补全。

资源截图

代码片段和文件信息

#include“CodeEditor.h“
#include
#include
#include

CodeEditor::CodeEditor(QWidget* parent) :QPlainTextEdit(parent)
{
QFont* codeFont = new QFont(“微软雅黑“ 14 10);
this->setFont(*codeFont);
this->setstyleSheet(“background-color: #fedcbd“);
this->lineNumberArea = new LineNumberArea(this);

connect(this &QPlainTextEdit::blockCountChanged this &CodeEditor::updateLineNumberAreaWidth);
connect(this &QPlainTextEdit::updateRequest this &CodeEditor::updateLineNumberArea);
connect(this &QPlainTextEdit::cursorPositionchanged this &CodeEditor::highlightCurrentLine);

this->updateLineNumberAreaWidth(0);
this->highlightCurrentLine();
}

int CodeEditor::lineNumberAreaWidth()
{
int digits = 1;
int max = qMax(1 blockCount());
while (max >= 10) {
max /= 10;
++digits;
}

int space = 10 + fontMetrics().width(QLatin1Char(‘14‘)) * digits;

return space;
}

void CodeEditor::findClass()
{

}

void CodeEditor::findFunc()
{

}

void CodeEditor::findVar()
{

}

//-------------------Slots Func------------------------

void CodeEditor::updateLineNumberAreaWidth(int newBlockCount)
{
setViewportMargins(lineNumberAreaWidth() 0 0 0);
}

void CodeEditor::updateLineNumberArea(const QRect &rect int dy)
{
if (dy)
this->lineNumberArea->scroll(0 dy);
else
this->lineNumberArea->update(0 rect.y() lineNumberArea->width() rect.height());

if (rect.contains(this->viewport()->rect()))
this->updateLineNumberAreaWidth(0);
}

void CodeEditor::resizeEvent(QResizeEvent *e)
{
QPlainTextEdit::resizeEvent(e);

QRect cr = contentsRect();
lineNumberArea->setGeometry(QRect(cr.left() cr.top() lineNumberAreaWidth() cr.height()));
}

void CodeEditor::highlightCurrentLine()
{
QList extraSelections;

if (!isReadOnly())
{
QTextEdit::ExtraSelection selection;

QColor lineColor = QColor(Qt::yellow).lighter(160);

selection.format.setBackground(lineColor);
selection.format.setProperty(QTextFormat::FullWidthSelection true);
selection.cursor = this->textCursor();
selection.cursor.clearSelection();
extraSelections.append(selection);
}
this->setExtraSelections(extraSelections);
}

//-------------------------------Event Func------------------------------

void CodeEditor::lineNumberAreaPaintEvent(QPaintEvent *event)
{
QPainter painter(lineNumberArea);
painter.fillRect(event->rect() Qt::lightGray);

//![extraAreaPaintEvent_0]

//![extraAreaPaintEvent_1]
QTextBlock block = firstVisibleBlock();
int blockNumber = block.blockNumber();
int top = (int)blockBoundingGeometry(block).translated(contentOffset()).top();
int bottom = top + (int)blockBoundingRect(block).height();
//![extraAreaPaintEvent_1]

//![extraAreaPaintEvent_2]
while (block.isValid() && top <= event->rect().bottom()) {
if (block.isVisible() && bottom >= event->rect().top()) {
QString number = QString

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    ..A..H.     52224  2018-04-18 20:15  CodeEditor\.vs\CodeEditor\v14\.suo

     文件       3989  2018-04-18 19:39  CodeEditor\CodeEditor\CodeEditor.cpp

     文件       1310  2018-04-18 20:03  CodeEditor\CodeEditor\CodeEditor.h

     文件       9386  2018-04-18 19:39  CodeEditor\CodeEditor\CodeEditor.vcxproj

     文件       2031  2018-04-18 19:39  CodeEditor\CodeEditor\CodeEditor.vcxproj.filters

     文件        629  2018-04-18 20:13  CodeEditor\CodeEditor\CodeEditor.vcxproj.user

     文件       4192  2018-04-01 19:53  CodeEditor\CodeEditor\GeneratedFiles\Debug\moc_CodeEditoe.cpp

     文件       3981  2018-04-18 19:40  CodeEditor\CodeEditor\GeneratedFiles\Debug\moc_MainWindow.cpp

     文件       2770  2018-04-02 17:12  CodeEditor\CodeEditor\GeneratedFiles\Debug\moc_ToolDialog.cpp

     文件       1414  2018-04-18 19:39  CodeEditor\CodeEditor\GeneratedFiles\qrc_ToolDialog.cpp

     文件       1374  2018-04-18 19:39  CodeEditor\CodeEditor\GeneratedFiles\ui_ToolDialog.h

     文件        178  2018-04-02 17:33  CodeEditor\CodeEditor\main.cpp

     文件       3783  2018-04-18 19:41  CodeEditor\CodeEditor\MainWindow.cpp

     文件        860  2018-04-18 19:40  CodeEditor\CodeEditor\MainWindow.h

     文件       2246  2018-04-03 17:09  CodeEditor\CodeEditor\StackNoBottom.h

     文件          7  2018-04-02 19:58  CodeEditor\CodeEditor\test.txt

     文件         70  2018-04-01 19:21  CodeEditor\CodeEditor\ToolDialog.qrc

     文件        604  2018-04-01 19:21  CodeEditor\CodeEditor\ToolDialog.ui

     文件        306  2018-04-18 20:04  CodeEditor\CodeEditor\x64\Debug\CodeEditor.log

     文件     386744  2018-04-18 20:04  CodeEditor\CodeEditor\x64\Debug\CodeEditor.obj

     文件      14102  2018-04-18 20:04  CodeEditor\CodeEditor\x64\Debug\CodeEditor.tlog\CL.command.1.tlog

     文件     181822  2018-04-18 20:04  CodeEditor\CodeEditor\x64\Debug\CodeEditor.tlog\CL.read.1.tlog

     文件      24814  2018-04-18 20:04  CodeEditor\CodeEditor\x64\Debug\CodeEditor.tlog\CL.write.1.tlog

     文件        225  2018-04-18 20:04  CodeEditor\CodeEditor\x64\Debug\CodeEditor.tlog\CodeEditor.lastbuildstate

     文件       9722  2018-04-18 19:40  CodeEditor\CodeEditor\x64\Debug\CodeEditor.tlog\CodeEditor.write.1u.tlog

     文件       2578  2018-04-18 20:04  CodeEditor\CodeEditor\x64\Debug\CodeEditor.tlog\link.command.1.tlog

     文件       5020  2018-04-18 20:04  CodeEditor\CodeEditor\x64\Debug\CodeEditor.tlog\link.read.1.tlog

     文件       1502  2018-04-18 20:04  CodeEditor\CodeEditor\x64\Debug\CodeEditor.tlog\link.write.1.tlog

     文件      89860  2018-04-18 20:04  CodeEditor\CodeEditor\x64\Debug\main.obj

     文件     196698  2018-04-18 20:04  CodeEditor\CodeEditor\x64\Debug\MainWindow.obj

............此处省略29个文件信息

评论

共有 条评论