Skip to content
ispyisail edited this page Sep 9, 2026 · 1 revision

Zu QElectroTech Beitragen

Vielen Dank fΓΌr Ihr Interesse, zu QElectroTech beizutragen ! Dieser Leitfaden erklΓ€rt, wie Sie sich einbringen kΓΆnnen, von Fehlermeldungen bis zum Schreiben von Code.

Schnelllinks :

Wege zum Beitragen

Bugs Melden

Sie haben ein Problem gefunden? Helfen Sie uns, es zu beheben:

  1. Suchen Sie nach vorhandenen Problemen um Duplikate zu vermeiden
  2. Erstellen Sie ein Problem mit :
    • Klare Problembeschreibung
    • Schritte zum Reproduzieren
    • Erwartetes vs. tatsΓ€chliches Verhalten
    • Ihre QET-Version und Betriebssystem
    • Screenshots falls hilfreich

Funktionen Vorschlagen

Haben Sie eine Idee ? Teilen Sie sie :

  1. Suchen Sie nach Diskussionen um zu sehen, ob sie bereits diskutiert wurde
  2. Γ–ffnen Sie eine Diskussion und erklΓ€ren :
    • Was Sie tun mΓΆchten
    • Warum es nΓΌtzlich wΓ€re
    • Beliebige alternative AnsΓ€tze

Dokumentation Schreiben

Helfen Sie, dieses Wiki und andere Dokumentationen zu verbessern :

  1. Siehe Zum Wiki Beitragen
  2. Hilf bei der Übersetzung der Dokumentation
  3. Erstellen Sie Tutorials oder Guides fΓΌr hΓ€ufige Workflows

Benutzerdefinierte Elemente Erstellen

Teilen Sie Ihre Element-Bibliotheken mit der Gemeinschaft :

  1. Erfahren Sie, wie Sie Elemente erstellen
  2. VerΓΆffentlichen Sie auf dem Elements-Repository
  3. Treten Sie dem Elements-Wartungs-Team bei

Code Beitragen

Bereit zu codieren? Folgen Sie diesen Schritten :


Erste Schritte mit Code-BeitrΓ€gen

Voraussetzungen

Sie benΓΆtigen :

ProgrammierfΓ€higkeiten :

  • C++ β€” QET ist in modernem C++ geschrieben (C++11 und spΓ€ter)
  • Qt-Framework β€” Qt 5.x (aktuell stabil), Qt 6.x (aktiv in Entwicklung)
  • Git β€” Versionskontrolle ; essentiell fΓΌr Zusammenarbeit

Werkzeuge und Wissen :

  • QET aus Quelle erstellen β€” Das Projekt kompilieren kΓΆnnen
  • CMake β€” Von QET verwendetes Build-System
  • VerstΓ€ndnis von :
    • Qt-Framework-Grundlagen (Signale/Slots, Widgets, Modelle)
    • XML-Verarbeitung (QET verwendet XML fΓΌr Dateien)
    • Die Codebase-Struktur

Empfohlen :

  • Gewisse Vertrautheit mit StromlaufplΓ€nen (hilft, die DomΓ€ne zu verstehen)
  • Erfahrung mit Open-Source-Beitrags-Workflows

SchlΓΌsseltechnologien

Komponente Technologie Verwendung
GUI-Framework Qt 5.x / Qt 6.x BenutzeroberflΓ€che, plattformΓΌbergreifend
Sprache C++ Logik der Kern-Anwendung
Build-System CMake Konfiguration und Kompilierung
Tests Catch2, googletest Unit-Test-Framework
Dokumentation Doxygen API-Dokumentations-Generierung
Übersetzungen Qt Linguist Internationalisierung (i18n)
Dateiformate XML Projekte (.qet), Elemente (.elmt), TitelblΓΆcke
VCS Git Versionskontrolle (GitHub)

Konfigurieren Sie Ihre Entwicklungsumgebung

  1. Forken Sie das Repository auf GitHub :

  2. Klonen Sie Ihren Fork lokal (mit Submodulen) :

    git clone --recursive https://github.com/IHR_BENUTZERNAME/qelectrotech-source-mirror.git
    cd qelectrotech-source-mirror
  3. FΓΌgen Sie Remote-Upstream hinzu um das Haupt-Repository zu verfolgen :

    git remote add upstream https://github.com/qelectrotech/qelectrotech-source-mirror.git
  4. Erstellen Sie einen Feature-Branch fΓΌr Ihre Arbeit :

    git checkout -b fix/issue-123
    # oder
    git checkout -b feature/mein-feature
    # Branch-Benennung : fix/*, feature/*, docs/*, refactor/*, etc.
  5. Konfigurieren Sie Git-Benutzer (falls noch nicht geschehen) :

    git config user.name "Ihr Name"
    git config user.email "ihre.email@beispiel.com"
  6. Aus Quelle erstellen um sicherzustellen, dass die Umgebung funktioniert :

    mkdir build && cd build
    cmake ..
    cmake --build . --config Release

Γ„nderungen Anbringen

  1. Problem/Funktion verstehen :

    • GitHub-Problem grΓΌndlich lesen
    • Kommentar posten falls unklar ("Ich mΓΆchte daran arbeiten")
    • Ansatz mit Verantwortlichen fΓΌr grâßere Γ„nderungen besprechen
  2. Sauberen, wartbaren Code schreiben :

    • Code-Formatierung befolgen : clang-format verwenden (Konfiguration enthalten)
    • Eine logische Γ„nderung pro Commit β€” keine unzusammenhΓ€ngenden Fixes mischen
    • AussagekrΓ€ftige Commit-Nachrichten β€” WARUM erklΓ€ren, nicht nur WAS
    • Sparsam kommentieren : Nur komplexe Logik benΓΆtigt Kommentare
    • Funktionen konzentriert und klein halten
  3. Code-Stil-Richtlinien :

    • Benennung : camelCase fΓΌr Variablen/Funktionen, PascalCase fΓΌr Klassen
    • Formatierung : Konfiguriert ΓΌber .clang-format-Datei (vor dem Commit ausfΓΌhren)
    • Qt-Konventionen : Qt/KDE-Kodierungsstandards befolgen
    • Modernes C++ : C++11/14/17-Funktionen angemessen verwenden
  4. Tests fΓΌr neue FunktionalitΓ€t hinzufΓΌgen :

    • Test-Framework : Catch2 oder googletest
    • Unit-Tests schreiben, die Ihre Γ„nderungen verifizieren
    • Sicherstellen, dass vorhandene Tests immer noch bestanden werden : ctest
    • AusfΓΌhren : cmake --build . && ctest
  5. Lokal erstellen und testen :

    cd build
    cmake --build . --config Release
    ctest  # Tests ausfΓΌhren
    ./qelectrotech  # App manuell testen
  6. Halten Sie Ihren Branch mit Upstream aktuell :

    git fetch upstream
    git rebase upstream/main
    # oder zusammenfΓΌhren, wenn Sie bevorzugen : git merge upstream/main

Reichen Sie Ihren Beitrag ein

  1. Pushen Sie Ihren Branch zu Ihrem Fork :

    git push origin fix/issue-123
  2. Erstellen Sie einen Pull Request (PR) auf GitHub :

    • Gehen Sie zu Ihrem Fork β†’ "Pull Request erstellen"-SchaltflΓ€che
    • Titel : Kurz, beschreibend (z. B. "NaN-Koordinatenvalidierung beim Element-Laden beheben")
    • Beschreibung : Einschließen :
      • Welches Problem lΓΆst dies?
      • Wie funktioniert Ihre LΓΆsung?
      • Screenshots fΓΌr UI-Γ„nderungen
      • HinzugefΓΌgte Tests
      • Verwandte Probleme : "Fixes #781" oder "Closes #782"
    • Base : Auf den main-Branch setzen
    • Draft PR : Als Entwurf markieren, falls noch in Bearbeitung
  3. Reagieren Sie auf Feedback :

    • Betreuer werden Ihren Code ΓΌberprΓΌfen
    • Kommentare und VorschlΓ€ge adressieren
    • ZusΓ€tzliche Commits zum gleichen Branch pushen (aktualisiert PR automatisch)
    • Seien Sie geduldig und zusammenarbeitend
  4. Halten Sie PR aktuell, falls sich der Main-Branch Γ€ndert :

    git fetch upstream
    git rebase upstream/main
    git push --force-with-lease origin fix/issue-123
  5. Feiern Sie ! πŸŽ‰ Einmal genehmigt und zusammengefΓΌhrt, ist Ihr Beitrag Teil von QET


Code-QualitΓ€t und Normen

Code-Formatierung

QET verwendet clang-format fΓΌr konsistenten Code-Stil :

# Formatieren Sie Ihre Dateien vor dem Commit
clang-format -i src/meine_datei.cpp
# oder formattieren Sie alle geΓ€nderten Dateien
git diff --name-only | xargs clang-format -i

Dokumentation

  • Inline-Kommentare : Nur fΓΌr nicht offensichtliche Logik
  • Funktions-Dokumentation : Doxygen-Stil fΓΌr ΓΆffentliche APIs verwenden
  • Commit-Nachrichten : Klar, beschreibend, erklΓ€ren warum nicht nur was

Tests

  • Unit-Tests : Tests fΓΌr neue FunktionalitΓ€t schreiben
  • Vorhandene Tests ausfΓΌhren : Sicherstellen, dass Sie nichts kaputt machen
  • Test-Abdeckung : Mehr Tests = besseres Vertrauen

Commit-Nachrichten-Richtlinien

Gute Commit-Nachrichten-Struktur :

Knappe Zusammenfassung in einer Zeile (50 Zeichen oder weniger)

LΓ€ngere ErklΓ€rung der Γ„nderung. ErklΓ€ren Sie das Problem,
Ihre Lâsung und alle Kompromisse oder Überlegungen.
Halten Sie sich an eine Linienbreite von 72 Zeichen.

Fixes #123

Beispiele :

  • βœ… "NaN-Koordinaten-Validierung beim Element-Laden beheben"
  • βœ… "Leiter-Streifen-Generator-Funktion mit Tests hinzufΓΌgen"
  • ❌ "Bug beheben"
  • ❌ "Code aktualisieren"

Code-Überprüfung

  • Betreuer werden Ihren Code ΓΌberprΓΌfen
  • Kommentare zielen auf Verbesserung, nicht auf persΓΆnliche Kritik ab
  • Seien Sie offen fΓΌr VorschlΓ€ge
  • Fragen Sie um Klarstellung, falls etwas unklar ist

Ressourcen und Hilfe

Wo Sie Hilfe Finden

Kommunikation

  • Seien Sie respektvoll β€” Wir sind alle hier um QET zu verbessern
  • Seien Sie klar β€” ErklΓ€ren Sie, was Sie erreichen mΓΆchten
  • Fragen Sie um Hilfe β€” Keine Angst vor Fragen
  • WΓΌrdigen Sie BeitrΓ€ge β€” Anerkennen Sie die Arbeit anderer

Danke dass Sie Beitragen ! πŸŽ‰

Ihre BeitrÀge helfen QElectroTech ein besseres Werkzeug für alle zu werden. Sei es ein Bug-Fix, eine neue Funktion, Dokumentation oder eine Übersetzung, Ihre Arbeit wird geschÀtzt !

Fragen ? Treten Sie dem Forum bei oder stellen Sie eine Frage auf GitHub-Diskussionen.


🌐 Sprache wΓ€hlen β€” English Β· FranΓ§ais Β· Deutsch

Getting Started

Home

🌐 Languages β€” English Β· FranΓ§ais Β· Deutsch

Downloads

Windows without admin rights β€” the portable archive, no installer

Quick Start Guide

User Manual

FAQ

Tips & Tricks

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

File formats
Elements XML
Project XML
Development

Building from Source

Contributing Code

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

Development Roadmap

Vision β€” proposal, under discussion

Developer Tools

About

Features

History

Community

License

Contributing to this Wiki

Clone this wiki locally