Qt 使用QScintilla 编辑lua 脚本

需求:

利用QScintilla 编辑lua 脚本

步骤:

1,下载 QScintilla Riverbank Computing | Download

2, 打开 src/qscintilla.pro 文件 编译出 dll库

3,工程中引入这个库

注意debug 模式 必须加载debug 版本编译的库,不然回提示 "QWidget: Must construct a QApplication before a QWidget"

4,使用

#include <QApplication>

#include <QMainWindow>
#include <QVBoxLayout>
#include <qsciscintilla.h>
#include <qscilexerlua.h>
#include <qsciapis.h>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    // 创建窗口和布局
    QMainWindow  window;

    // 创建编辑器控件
    QsciScintilla editor(&window);
    window.setCentralWidget(&editor);
    editor.setMarginWidth(0, 40);
    editor.setIndentationGuides(true);
    editor.setTabWidth(4);
    editor.setUtf8(true);

    QsciLexerLua *textLexer = new QsciLexerLua;
    editor.setLexer(textLexer);

    //设置编码为UTF-8
    QsciAPIs apis(textLexer);
    apis.add(QString("and"));
    apis.add(QString("break"));
    apis.add(QString("do"));
    apis.add(QString("else"));
    apis.add(QString("elseif"));
    apis.add(QString("end"));
    apis.add(QString("false"));
    apis.add(QString("for"));
    apis.add(QString("function"));
    apis.add(QString("if"));
    apis.add(QString("in"));
    apis.add(QString("local"));
    apis.add(QString("nil"));
    apis.add(QString("not"));
    apis.add(QString("or"));
    apis.add(QString("repeat"));
    apis.add(QString("return"));
    apis.add(QString("then"));
    apis.add(QString("true"));
    apis.add(QString("until"));
    apis.add(QString("while"));
    apis.prepare();

    editor.setAutoCompletionSource(QsciScintilla::AcsAll);
    editor.setAutoCompletionCaseSensitivity(true);
    editor.setAutoCompletionThreshold(1);
    editor.SendScintilla(QsciScintilla::SCI_SETCODEPAGE,QsciScintilla::SC_CP_UTF8);
    editor.setCaretLineVisible(true);
    editor.setFolding(QsciScintilla::BoxedFoldStyle);

    // 显示窗口
    window.show();

    return app.exec();
}

5,效果

相关推荐
汪洪墩2 分钟前
【Mars3d】设置backgroundImage、map.scene.skyBox、backgroundImage来回切换
开发语言·javascript·python·ecmascript·webgl·cesium
云空7 分钟前
《QT 5.14.1 搭建 opencv 环境全攻略》
开发语言·qt·opencv
Anna。。9 分钟前
Java入门2-idea 第五章:IO流(java.io包中)
java·开发语言·intellij-idea
我曾经是个程序员32 分钟前
鸿蒙学习记录
开发语言·前端·javascript
爱上语文33 分钟前
宠物管理系统:Dao层
java·开发语言·宠物
小老鼠不吃猫1 小时前
力学笃行(二)Qt 示例程序运行
开发语言·qt
长潇若雪1 小时前
《类和对象:基础原理全解析(上篇)》
开发语言·c++·经验分享·类和对象
数据小小爬虫2 小时前
如何利用Python爬虫获取商品历史价格信息
开发语言·爬虫·python
Gao_xu_sheng2 小时前
Java程序打包成exe,无Java环境也能运行
java·开发语言
NiNg_1_2343 小时前
Python的sklearn中的RandomForestRegressor使用详解
开发语言·python·sklearn