-
大小: 13.15MB文件類型: .rar金幣: 1下載: 0 次發(fā)布日期: 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\li
?????文件???????5020??2018-04-18?20:04??CodeEditor\CodeEditor\x64\Debug\CodeEditor.tlog\li
?????文件???????1502??2018-04-18?20:04??CodeEditor\CodeEditor\x64\Debug\CodeEditor.tlog\li
?????文件??????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個文件信息
評論
共有 條評論