Repository navigation
TIER3 RESEARCH
Research compiled for Contributing, Building, and Development Roadmap pages.
- Language: C++ (primary development language)
- Framework: Qt Framework (Qt 5.x, moving to Qt 6.x)
- Additional libraries: KF5 (KDE Frameworks 5)
- Build system: CMake
- Version control: Git
- File formats: XML (for projects, elements, titleblocks)
- Documentation: Doxygen (for API docs)
- GUI translations: Qt Linguist
git clone --recursive https://github.com/qelectrotech/qelectrotech-source-mirror.git-
Code formatting:
.clang-formatfile for consistent style - Documentation: Doxygen for API documentation
- Testing: Unit test framework (Catch2, googletest)
- Forum: https://qelectrotech.org/forum/
- Wiki: https://qelectrotech.org/wiki_new/
- Bug Tracker: https://qelectrotech.org/bugtracker/
- Mailing List Archive: https://listengine.tuxfamily.org/lists.tuxfamily.org/qet/
- GitHub Issues: https://github.com/qelectrotech/qelectrotech-source-mirror/issues
- 30 open issues currently (bugs, features, documentation)
- Critical bugs: NaN coordinates causing hangs, UUID duplicates
- UI/UX: Conductor rendering, folio links, shortcuts config
- Features: IEC 61355 folder structure, terminal block improvements
- Maintenance: Wiki cleanup (20+ dead links)
- Latest stable: v0.100 (January 25, 2024)
- Nightly builds: Available (may be unstable)
- Qt5 status: Frozen, unmaintained
- Qt6 status: Active development
- CMake: Primary build system
- Dependency manager: Handles Catch2, googletest, Qt versions
- Qt5/Qt6: Framework for GUI and cross-platform support
- Catch2 v2.13.10: Testing framework
- googletest v1.17.0: Testing framework
- i18n support: Qt Linguist for translations
- Dependency upgrades
- CMake refinements
- Improved i18n handling
- Updated packaging scripts
- Cross-platform deployment (AppImage, Flatpak, Snap, macOS)
- Expanded unit test coverage
- Better QA processes
- Linux: Full support via package managers and AppImage
- Windows: Installer and portable support
- macOS: Native package and AppImage
- ARM/aarch64: Recent support additions for non-x86 architectures
Major modernization initiative addressing technical debt since 2006. No explicit timeline provided.
Must implement before major refactoring begins:
- Terminal strip generator
- Cable generator
- Project structure improvements
Element Files (.elmt):
- Convert to proper SVG namespace
- Separate non-graphical data (dynamic text, terminals, information)
- Better structure for import/export
Project Files (.qet):
- Restructure into zipped folder format
- Simplified .qet manifest file
- SQLite database for all project metadata
- Organized subdirectories:
- images/ (embedded diagrams)
- elements/ (local custom elements)
- titleblocks/ (custom title blocks)
- config/ (project configuration)
QetDiagramEditor Refactoring:
- Extract scattered QActions into ActionPool singleton
- Reduce class complexity
- Better code organization
Serialization Layer:
- Create dedicated serialization classes
- Separate XML handling from domain logic
- Potentially plugin-based approach
Element Information System:
- Redesign element information class
- Interface with SQLite database
- Remove direct data storage
Electrical Potential System:
- Introduce electrical potential as first-class concept
- Group conductor properties by potential
- Allow individual overrides per conductor
- Better electrical relationship modeling
Intelligent Auto-Numbering:
- Formula-based system using variables
- Examples: %{prefix}, %{element_type}
- Adapts automatically to element types
- More flexible numbering schemes
Cross-Reference (Xref) Expansion:
- Increased flexibility in display options
- Better positioning and sizing control
- Improved multi-folio linking
Element Prefix Standardization:
- Standardize prefixes by element type
- Support for norm specifications (IEC, DIN, etc.)
- Automatic prefix assignment
Identified Issues Needing Work:
- Titleblock code simplification and redesign
- Conductor creation complexity reduction
- Text handling inconsistencies
- Data validation improvements
- Proper error handling
Critical Bugs:
- #781: NaN coordinates cause QET to hang on project load
- #782: Non-finite coordinates propagate to saved files
- #783: Duplicated UUID issues in elements/links
UI/UX Issues:
- #735: Folio report link picker displays blanks
- #734: Conductor rendering spurs at terminals
- #757: Shortcuts config reports false conflicts
Feature Requests:
- #730: IEC/EN 61355 folder structure support
- #663: Terminal block info menu in element editor
- #802: Page refresh after element modification
Documentation:
- #816: 20+ dead sidebar wiki links need cleanup
- Qt5: Legacy, no longer maintained in nightly builds
- Qt6: Active development focus
- Timeline: Gradual migration, nightly builds on Qt6
- Benefits: Modernization, performance, long-term support
- No explicit roadmap timeline provided
- Major refactoring deferred until prerequisites complete
- Nightly builds show active ongoing work
- Community contributions welcome for:
- Bug fixes
- Feature implementation
- Documentation improvements
- Testing and QA
Contributing Page Should Cover:
- C++/Qt/CMake skills required
- GitHub fork + clone workflow
- CONTRIBUTING.md guidelines (reference)
- How to find work (issues list)
- Testing framework (Catch2, googletest)
- Code formatting (clang-format)
- Documentation (Doxygen)
- Communication channels (forum, GitHub)
- PR review process
- Building locally before submitting
Building Page Should Cover:
- Prerequisites: CMake, Qt5/Qt6, C++ compiler
- Platform-specific setup (Linux, Windows, macOS, ARM)
- Step-by-step build instructions
- Dependency handling
- Build variants (Release, Debug, with sanitizers)
- Common build issues and fixes
- Running tests
- Contributing changes back
Development Roadmap Should Cover:
- QET 2.0 refactoring initiative
- File format modernization plans
- Architectural improvements
- Feature enhancements (electrical potential, auto-numbering, xref)
- Qt6 migration status
- Current open issues (30 total)
- How to contribute to roadmap
- Prerequisites before major refactoring
- No explicit timeline (be honest about this)
- Community contribution opportunities
Getting Started
π Languages β English Β· FranΓ§ais Β· Deutsch
Windows without admin rights β the portable archive, no installer
Guides
Conductors β wire properties, what feeds which export, cables, and hops where wires cross
Wires per terminal β limit the wires on a terminal, chain wiring instead of stars
Printing and exporting β paper, PDF, images, and what each path does differently
Linking elements β master, slave, terminal
PLC modules β I/O tables and linking a wire to a specific point
Using the element editor β drawing tools, saving, checks
Grid size and element size β why symbols aren't all the same scale, and scaling one without leaving the grid
Preferences reference β what each settings page does
Saving and loading settings β your whole setup in one file, to copy or keep
Keyboard-only control β mouseless QET, and what still needs a mouse
Mouse modifiers β what Shift, Ctrl and Alt change while you drag
3D mouse β SpaceMouse pan, zoom and buttons
Aligning items β snap symbols back to the grid, or line them up
Pictures on a sheet β labels, crop, transparency, what they cost in the file
Arcs and curved wires β the Arc tool, pulling an arc in or out, rounding a corner with a fillet, dashed arcs for lighting layouts
Grouping items β select, move and copy several items as one
Finding your place on a sheet β go to a cell like B13 or 4-B7, keep the headers in sight, show the cell limits, zoom and pan
Showing and hiding kinds of items β hide texts, wire numbers, shapes, pictures, tables or cross-references on every sheet
Drawing faster β place without dragging, the S shortcut bar, command search, gestures
Customising QElectroTech β keys, toolbar size and contents, the gesture ring (partly pending)
Managing collections β folders, writability, building your own shortlist
Templates β reusable multi-element blocks, placed by double-click or drag
Search & Replace β bulk property changes
Building a nomenclature query β the BOM/summary table builder
Linking wires across pages β sheet reports
Variables & formulas β %f, %{label}, sequences
Auto-numbering β schemes, sequences, freezing
Terminal strips β strips, levels, bridges
Title block templates β the .titleblock format
Importing EPLAN parts (.edz) β EPLAN Data Portal
DXF import & export β two unrelated features, one format; command-line export and layers
The project database β the in-memory SQLite cache
Development
Automating QET β CLI, XML formats, external tools
CLI Reference β command line usage
JavaScript Scripting β --run, geometry editing, undo
MCP server β let an AI assistant read, verify and edit projects
Connecting an AI assistant β setup for Claude, Copilot, Gemini, Codex, Cursor, LM Studio
Script buttons β stored scripts with an icon, by hand or by an assistant
Live mode β an assistant working in the open project while you watch
Macro recorder β record a task by hand, for an assistant to script
Vision β proposal, under discussion
