Files
BionxControl/doc/material_dummy/mainwindow.h
2025-12-24 14:44:54 +01:00

150 lines
3.8 KiB
C++

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QApplication>
#include <QWidget>
#include <QTableView>
#include <QStandardItemModel>
#include <QVBoxLayout>
#include <QHeaderView>
#include <QSlider>
#include <QPainter>
#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QLineEdit>
#include <QSlider>
#include <QCheckBox>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QLabel>
#include <QProxyStyle>
#include <QPainter>
#include <QStyleOptionSlider>
#include <QGraphicsDropShadowEffect>
#include "sliderdelegate.h"
class TableViewDemo : public QWidget
{
public:
TableViewDemo()
{
setWindowTitle("QTableView mit QSlider Editor");
resize(700, 400);
auto* layout = new QVBoxLayout(this);
// Model erstellen (3 Spalten, 10 Zeilen)
auto* model = new QStandardItemModel(10, 2, this);
// Header setzen
model->setHorizontalHeaderLabels({"Name", "Wert"});
// Daten einfügen
for (int row = 0; row < 10; ++row)
{
auto* nameItem = new QStandardItem(QString("Eintrag %1").arg(row + 1));
auto* valueItem = new QStandardItem();
// Wert-Item editierbar machen
valueItem->setData(row * 10, Qt::EditRole); // Startwert 0-90
valueItem->setEditable(true);
// Andere nicht editierbar
nameItem->setEditable(false);
model->setItem(row, 0, nameItem);
model->setItem(row, 1, valueItem);
}
// TableView erstellen
auto* tableView = new QTableView();
tableView->setModel(model);
// === SLIDER DELEGATE für Spalte 2 ===
//auto* sliderDelegate = new SliderDelegate(this);
//tableView->setItemDelegateForColumn(1, sliderDelegate);
tableView->setAlternatingRowColors(false);
// === LINIEN ENTFERNEN ===
tableView->setShowGrid(false);
// Header Style
tableView->horizontalHeader()->setStyleSheet(R"(
QHeaderView::section {
background-color: #F5F5F5;
padding: 10px;
border: none;
font-weight: bold;
color: #333;
}
)");
// Vertikaler Header ausblenden
tableView->verticalHeader()->setVisible(false);
// Alternating Row Colors
//tableView->setAlternatingRowColors(true);
// Style für TableView
tableView->setStyleSheet(R"(
QTableView
{
background-color: white;
border: none;
selection-background-color: #E3F2FD;
selection-color: black;
}
QTableView::item
{
padding: 10px;
border: none;
}
QTableView::item:selected {
background-color: #E3F2FD;
border: 1px solid #0078D4; /* Rahmen um JEDE Zelle */
}
}
)");
// Spaltenbreite
tableView->setColumnWidth(0, 50);
tableView->setColumnWidth(1, 150);
tableView->horizontalHeader()->setStretchLastSection(true);
// Row Height für bessere Slider-Darstellung
tableView->verticalHeader()->setDefaultSectionSize(40);
// Selection
tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
//tableView->setSelectionMode(QAbstractItemView::SingleSelection);
// Edit Trigger - Klick zum Editieren
tableView->setEditTriggers(QAbstractItemView::DoubleClicked |
QAbstractItemView::SelectedClicked);
layout->addWidget(tableView);
// Signal für Änderungen
connect(model, &QStandardItemModel::dataChanged, this,
[](const QModelIndex& topLeft, const QModelIndex& bottomRight) {
if (topLeft.column() ==1) {
int row = topLeft.row();
int value = topLeft.data(Qt::DisplayRole).toInt();
qDebug() << "Zeile" << row << "wurde auf" << value << "gesetzt";
}
});
}
};
#endif // MAINWINDOW_H