feat: basic geometry spreadsheet model

This commit is contained in:
parker
2025-08-05 22:10:10 +01:00
parent ef372a9630
commit 2c139a5f6a
4 changed files with 56 additions and 0 deletions

View File

@@ -33,6 +33,7 @@ set(GUI_SOURCES
src/Gui/UtilWidgets/Splitter.cpp
src/Gui/GeometrySpreadsheetPanel/GeometrySpreadsheetPanel.cpp
src/Gui/GeometrySpreadsheetPanel/GeometrySpreadsheetMenuBar.cpp
src/Gui/GeometrySpreadsheetPanel/GeometrySpreadsheetModel.cpp
src/Gui/Viewport/Viewport.cpp
src/Gui/Viewport/ViewportGLWidget.cpp
src/Gui/Viewport/GLCamera.cpp

View File

@@ -0,0 +1,32 @@
#include "Gui/GeometrySpreadsheetPanel/GeometrySpreadsheetModel.h"
int GeometrySpreadsheetModel::rowCount(const QModelIndex &parent) const
{
return stringList.count();
}
QVariant GeometrySpreadsheetModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid())
return QVariant();
if (index.row() >= stringList.size())
return QVariant();
if (role == Qt::DisplayRole)
return stringList.at(index.row());
else
return QVariant();
}
QVariant GeometrySpreadsheetModel::headerData(int section, Qt::Orientation orientation,
int role) const
{
if (role != Qt::DisplayRole)
return QVariant();
if (orientation == Qt::Horizontal)
return QStringLiteral("Column %1").arg(section);
else
return QStringLiteral("Row %1").arg(section);
}

View File

@@ -0,0 +1,19 @@
#pragma once
#include <QAbstractListModel>
class GeometrySpreadsheetModel : public QAbstractListModel
{
Q_OBJECT
public:
GeometrySpreadsheetModel(const QStringList &strings, QObject *parent = nullptr)
: QAbstractListModel(parent), stringList(strings) {}
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
QVariant data(const QModelIndex &index, int role) const override;
QVariant headerData(int section, Qt::Orientation orientation,
int role = Qt::DisplayRole) const override;
private:
QStringList stringList;
};

View File

@@ -1,5 +1,6 @@
#include "Gui/GeometrySpreadsheetPanel/GeometrySpreadsheetPanel.h"
#include "Gui/GeometrySpreadsheetPanel/GeometrySpreadsheetMenuBar.h"
#include "Gui/GeometrySpreadsheetPanel/GeometrySpreadsheetModel.h"
#include <QTableWidget>
#include <QTreeWidget>
#include <QLabel>
@@ -24,6 +25,9 @@ GeometrySpreadsheetPanel::GeometrySpreadsheetPanel(QWidget *parent, Qt::WindowFl
}
)");
t->setFrameStyle(QFrame::NoFrame);
auto model = new GeometrySpreadsheetModel({"hello", "world"});
t->setModel(model);
mainLayout_->addWidget(new GeometrySpreadsheetMenuBar());