ScintillaQuick is a Qt Quick-native integration of the
Scintilla editing engine.
It is intended for applications that want Scintilla behavior inside a real
QQuickItem.
- A
ScintillaQuick_itemthat derives fromQQuickItem - Scintilla's editing model and message API on top of a Qt Quick surface
- Qt Quick-native focus, input, IME, and scene-graph rendering
- CMake package export for
find_package(ScintillaQuick) - A minimal example application, benchmark target, and validation tests
ScintillaQuick is usable today, but it is still an early-stage library.
| Platform | Static | Shared | CI test run | Consumer install smoke | Notes |
|---|---|---|---|---|---|
| Linux | 🟢 | 🟢 | 🟢 | 🟢 | GitHub Actions runs dispatch-table, smoke, and frame-validation tests. |
| macOS | 🟢 | 🟢 | 🟢 | 🟢 | GitHub Actions runs dispatch-table, smoke, and frame-validation tests. |
| Windows | 🟢 | 🟢 | 🟢 | 🟢 | Shared-build test jobs add build/Release to PATH so ScintillaQuick.dll is found at runtime. |
Current master status: all GitHub Actions matrix jobs pass on Qt 6.7.2.
Current repository state:
- Version
0.1.0 - Qt
6.7+ - Static library build
- C++ integration first
- Optional QML type registration helper is available
- CMake
3.24+ - A C++20 compiler
- Qt
6.7+with:CoreGuiQmlQuick
Target platforms:
- Windows
- Linux
- macOS
cmake -S . -B build
cmake --build buildThis builds:
ScintillaQuickstatic libraryscintillaquick_minimal_editorscintillaquick_embedded_benchmark- test executables when
BUILD_TESTING=ON
To install the package:
cmake --install build --prefix <install-prefix>Installed consumers can then use find_package(ScintillaQuick CONFIG REQUIRED).
find_package(ScintillaQuick CONFIG REQUIRED)
target_link_libraries(my_app PRIVATE ScintillaQuick::ScintillaQuick)Public headers:
Installed packages expose Scintilla's public headers alongside the library. Scintilla internal implementation headers are intentionally not installed.
#include <QGuiApplication>
#include <QQuickWindow>
#include <scintillaquick/scintillaquick_item.h>
#include "Scintilla.h"
int main(int argc, char **argv) {
QGuiApplication app(argc, argv);
QQuickWindow window;
window.resize(1100, 720);
window.setColor(Qt::white);
ScintillaQuick_item editor;
editor.setParentItem(window.contentItem());
editor.setWidth(window.width());
editor.setHeight(window.height());
editor.setProperty("text", "hello from ScintillaQuick\n");
editor.send(SCI_STYLECLEARALL);
window.show();
editor.forceActiveFocus();
return app.exec();
}For a runnable example, see
examples/minimal_editor/main.cpp.
The library exposes register_scintilla_type() in
scintillaquick_item.h, which
registers:
- module:
ScintillaQuick - version:
1.0 - type:
ScintillaQuick_item
CTest currently registers:
scintillaquick_smoke_testscintillaquick_dispatch_table_testscintillaquick_embedded_benchmarkscintillaquick_frame_validation_testscintillaquick_visual_regression_test
Run them with:
ctest --test-dir build --output-on-failureNotes:
- Visual-regression coverage uses Qt's software scene graph for deterministic output.
- On Windows, the visual tests use the normal
windowsQt platform plugin, so they require a desktop session rather than a truly headless environment.
include/: public headerssrc/: library implementationexamples/: sample applicationsbenchmarks/: benchmark applicationtests/: validation and regression testsdocs/: public project documentationthird_party/: vendored dependencies
Project code is released under the BSD 2-Clause license. See
LICENSE.
The repository also vendors Scintilla under its own license. See
third_party/scintilla/LICENSE.