-
大小: 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\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个文件信息
- 上一篇:高校科研成果管理系统
- 下一篇:中兴通讯视讯ZXV10 T800产品技术规范书
相关资源
- 5个网页模板每个都是一套完整的
- opc ua客户端与服务端开发
- 在ESP32下,使用mbedtls库,测试sha、a
-
8266接入华为hili
nk源码demo_proj.rar - BaiDuDemoTest.zip
- 一个基于easypr的车牌识别demo
- texstudio-2.12.22-win-qt5.zip
- 简单手机桌面管理小程序demo
- echarts离线百度地图+demo演示+步骤文档
- 基于Qt5.9.1(MSVC) PJSIP网络电话源代码
- 腾讯云 直播 模块 demo
- 苹果USB认证demo程序
- snap7库在qt5下的配置程序存档
- Qt 5开发及(第4版)[陆文周][课件和代
- duilib源码及Demo DuiMessageBox通用版
- 语音识别demo
- RecyclerView垂直多条Items广告轮播Demo
- 创建ext-6.0.2demo
- 《QT5开发及》教程配套
- Qt5开发及 完整高清版ppt+源码不是原书
- Qt5开发及完整版随书配套源代码
- VS2015+QT5设计用户登录界面
- vce_exam_simulator_demo_2.7.7z
- Ble蓝牙4.0搜索设备链接获取值Demo
- STM32F103C8T6例程-DEMO.zip
- Qt5.6.1下写的简单版的无聊打飞机游戏
- 高德地图导航demo
- AD7616_DEMO_sch+pcb+project
- 步进电机STM32F103C8T6的demo代码
- 微信JSAPI支付完整Demo第二版(新增关
评论
共有 条评论