#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include 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