Repository navigation
contributing DE
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 :
- Probleme zum Arbeiten β 30+ Probleme benΓΆtigen Hilfe
- Quell-Repository β GitHub-Startseite
- Forum β Gemeinschafts-Diskussion
- CONTRIBUTING.md β Offizielle Richtlinien (im Repository)
Sie haben ein Problem gefunden? Helfen Sie uns, es zu beheben:
- Suchen Sie nach vorhandenen Problemen um Duplikate zu vermeiden
-
Erstellen Sie ein Problem mit :
- Klare Problembeschreibung
- Schritte zum Reproduzieren
- Erwartetes vs. tatsΓ€chliches Verhalten
- Ihre QET-Version und Betriebssystem
- Screenshots falls hilfreich
Haben Sie eine Idee ? Teilen Sie sie :
- Suchen Sie nach Diskussionen um zu sehen, ob sie bereits diskutiert wurde
-
Γffnen Sie eine Diskussion und erklΓ€ren :
- Was Sie tun mΓΆchten
- Warum es nΓΌtzlich wΓ€re
- Beliebige alternative AnsΓ€tze
Helfen Sie, dieses Wiki und andere Dokumentationen zu verbessern :
- Siehe Zum Wiki Beitragen
- Hilf bei der Γbersetzung der Dokumentation
- Erstellen Sie Tutorials oder Guides fΓΌr hΓ€ufige Workflows
Teilen Sie Ihre Element-Bibliotheken mit der Gemeinschaft :
- Erfahren Sie, wie Sie Elemente erstellen
- VerΓΆffentlichen Sie auf dem Elements-Repository
- Treten Sie dem Elements-Wartungs-Team bei
Bereit zu codieren? Folgen Sie diesen Schritten :
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
| 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) |
-
Forken Sie das Repository auf GitHub :
- Besuchen Sie https://github.com/qelectrotech/qelectrotech-source-mirror
- Klicken Sie auf die SchaltflΓ€che "Fork"
- Erstellt Ihre eigene Kopie
-
Klonen Sie Ihren Fork lokal (mit Submodulen) :
git clone --recursive https://github.com/IHR_BENUTZERNAME/qelectrotech-source-mirror.git cd qelectrotech-source-mirror -
FΓΌgen Sie Remote-Upstream hinzu um das Haupt-Repository zu verfolgen :
git remote add upstream https://github.com/qelectrotech/qelectrotech-source-mirror.git
-
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.
-
Konfigurieren Sie Git-Benutzer (falls noch nicht geschehen) :
git config user.name "Ihr Name" git config user.email "ihre.email@beispiel.com"
-
Aus Quelle erstellen um sicherzustellen, dass die Umgebung funktioniert :
mkdir build && cd build cmake .. cmake --build . --config Release
-
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
-
Sauberen, wartbaren Code schreiben :
-
Code-Formatierung befolgen :
clang-formatverwenden (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
-
Code-Formatierung befolgen :
-
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
-
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
-
Lokal erstellen und testen :
cd build cmake --build . --config Release ctest # Tests ausfΓΌhren ./qelectrotech # App manuell testen
-
Halten Sie Ihren Branch mit Upstream aktuell :
git fetch upstream git rebase upstream/main # oder zusammenfΓΌhren, wenn Sie bevorzugen : git merge upstream/main
-
Pushen Sie Ihren Branch zu Ihrem Fork :
git push origin fix/issue-123
-
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
-
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
-
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
-
Feiern Sie ! π Einmal genehmigt und zusammengefΓΌhrt, ist Ihr Beitrag Teil von QET
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- 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
- 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
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"
- 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
- Entwickler-Dokumentation β Architektur und API-Referenz
- Forum β Fragen Sie die Gemeinschaft
- GitHub-Diskussionen β Design-Anfragen und Ideen
- QET Erstellen β Build-Anweisungen
- Code-Beispiele β Sehen Sie wie es implementiert ist
- 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
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
π 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
