diff --git a/CMakeLists.txt b/CMakeLists.txt index ff59e0a..f151d34 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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 diff --git a/src/Gui/GeometrySpreadsheetPanel/GeometrySpreadsheetModel.cpp b/src/Gui/GeometrySpreadsheetPanel/GeometrySpreadsheetModel.cpp new file mode 100644 index 0000000..bf3fe2f --- /dev/null +++ b/src/Gui/GeometrySpreadsheetPanel/GeometrySpreadsheetModel.cpp @@ -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); +} diff --git a/src/Gui/GeometrySpreadsheetPanel/GeometrySpreadsheetModel.h b/src/Gui/GeometrySpreadsheetPanel/GeometrySpreadsheetModel.h new file mode 100644 index 0000000..6005224 --- /dev/null +++ b/src/Gui/GeometrySpreadsheetPanel/GeometrySpreadsheetModel.h @@ -0,0 +1,19 @@ +#pragma once +#include + +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; +}; diff --git a/src/Gui/GeometrySpreadsheetPanel/GeometrySpreadsheetPanel.cpp b/src/Gui/GeometrySpreadsheetPanel/GeometrySpreadsheetPanel.cpp index 4a31c26..81e5b59 100644 --- a/src/Gui/GeometrySpreadsheetPanel/GeometrySpreadsheetPanel.cpp +++ b/src/Gui/GeometrySpreadsheetPanel/GeometrySpreadsheetPanel.cpp @@ -1,5 +1,6 @@ #include "Gui/GeometrySpreadsheetPanel/GeometrySpreadsheetPanel.h" #include "Gui/GeometrySpreadsheetPanel/GeometrySpreadsheetMenuBar.h" +#include "Gui/GeometrySpreadsheetPanel/GeometrySpreadsheetModel.h" #include #include #include @@ -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());