Ein modernes Desktop-Programm zum Erfassen und Auswerten von Strom (kWh), Wasser (m³) und Gas (m³) – gebaut mit Rust und Qt 6 (QML).
| Funktion | Beschreibung |
|---|---|
| Verbrauch erfassen | Datum, Wert und optionale Notiz pro Eintrag |
| Datenbank-Info | Vollständiger Pfad und Dateigröße werden angezeigt |
| Neue DB erstellen | Beliebigen Speicherort per Dateidialog wählen |
| DB öffnen | Vorhandene .db/.sqlite-Datei laden |
| CSV-Export | Alle drei Verbrauchsarten in einer Datei |
| XLSX-Export | Excel-Datei mit je einem Blatt pro Art + Summenzeile |
| Statistik | Gesamtverbrauch und Anzahl Einträge je Art |
| Löschen | Jeden Eintrag einzeln entfernen |
Ubuntu / Debian:
sudo apt update
sudo apt install -y \
build-essential cmake ninja-build pkg-config \
qt6-base-dev qt6-declarative-dev qt6-tools-dev \
libgl1-mesa-dev libsqlite3-devFedora / RHEL:
sudo dnf install -y \
gcc cmake ninja-build pkg-config \
qt6-qtbase-devel qt6-qtdeclarative-devel qt6-qttools \
mesa-libGL-devel sqlite-develmacOS (Homebrew):
brew install qt6 cmake ninja
export PATH="/opt/homebrew/opt/qt/bin:$PATH"Windows (MSVC + vcpkg):
# Qt 6 via Installer: https://www.qt.io/download-qt-installer
# Dann:
set Qt6_DIR=C:\Qt\6.x.x\msvc2022_64\lib\cmake\Qt6curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup update stable# 1. Repository klonen / Ordner entpacken
cd verbrauchsmanager
# 2. Debug-Build (schneller)
cargo run
# 3. Release-Build (optimiert)
cargo build --release
./target/release/verbrauchsmanagerDie SQLite-Datenbank wird standardmäßig hier gespeichert:
| Betriebssystem | Pfad |
|---|---|
| Linux | ~/.local/share/verbrauchsmanager/verbrauch.db |
| macOS | ~/Library/Application Support/verbrauchsmanager/verbrauch.db |
| Windows | %APPDATA%\Local\verbrauchsmanager\verbrauch.db |
Der Pfad wird in der Statusleiste unten und im Datenbank-Tab angezeigt. Über Neue Datenbank erstellen kann ein beliebiger anderer Ort gewählt werden.
-- Tabelle für Strom
CREATE TABLE strom (
id INTEGER PRIMARY KEY AUTOINCREMENT,
datum TEXT NOT NULL, -- Format: "YYYY-MM-DD"
wert REAL NOT NULL CHECK(wert >= 0),
notiz TEXT NOT NULL DEFAULT ''
);
-- Identisch für: wasser, gas
CREATE INDEX idx_strom_datum ON strom(datum DESC);Art,Datum,Wert,Einheit,Notiz
Strom,2024-01-15,312.5000,kWh,Hauptzähler
Strom,2024-02-15,287.2300,kWh,
Wasser,2024-01-15,4.8500,m³,Keller-Zähler
Gas,2024-01-15,123.4000,m³,
Die Excel-Datei enthält drei Tabellenblätter:
Strom (kWh)– alle Stromeinträge + GesamtsummeWasser (m³)– alle Wassereinträge + GesamtsummeGas (m³)– alle Gaseinträge + Gesamtsumme
verbrauchsmanager/
├── Cargo.toml # Abhängigkeiten & Build-Konfiguration
├── build.rs # Qt6-Build-Skript (cxx-qt-build)
├── src/
│ ├── main.rs # Einstiegspunkt, Qt-App-Initialisierung
│ ├── bridge.rs # cxx-qt-Bridge: Qt ↔ Rust Schnittstelle
│ └── datenbank.rs # SQLite-Operationen, CSV/XLSX-Export
└── qml/
├── main.qml # Hauptfenster, TabBar, Layout
├── EingabeSeite.qml # Eingabeformular + Tabelle (3× verwendet)
└── DatenbankSeite.qml # DB-Verwaltung, Statistik, Export
| Crate | Zweck |
|---|---|
cxx-qt |
Rust ↔ Qt6 QObject-Bindings |
cxx-qt-lib |
Qt-Typen (QString, QStringList …) |
rusqlite |
SQLite (statisch gelinkt, kein extra sqlite3 nötig) |
csv |
CSV-Export |
xlsxwriter |
Excel-XLSX-Export |
chrono |
Datum/Zeit-Validierung |
dirs |
Betriebssystem-spezifische Datenpfade |
anyhow |
Fehlerbehandlung |
Qt6 not found
export CMAKE_PREFIX_PATH=/path/to/Qt/6.x.x/gcc_64libGL not found (Linux)
sudo apt install libgl1-mesa-devFenster öffnet sich nicht / leer
- Qt Quick Controls 2 Style setzen:
QT_QUICK_CONTROLS_STYLE=Fusion ./verbrauchsmanagerMIT License – frei verwendbar und modifizierbar.