tycho: use a QWidget base for project views

master
an 2019-07-10 05:15:12 -04:00
parent 18a8318b70
commit 01a5cdc683
8 changed files with 20 additions and 41 deletions

@ -1 +1 @@
Subproject commit 598336e657cb4bf5ef5070dfa35b999b7dfd341b Subproject commit 8a37b359ca9dba414d84472b1750e952a42710f6

View File

@ -41,7 +41,6 @@ add_library(
ui/about.ui ui/about.ui
ui/license.ui ui/license.ui
ui/mapprops.ui ui/mapprops.ui
ui/mapview.ui
ui/menu.ui ui/menu.ui
ui/points.ui ui/points.ui
ui/project.ui ui/project.ui

View File

@ -56,7 +56,7 @@
} }
}, },
"IMapView": { "IMapView": {
"type": "Object", "type": "Widget",
"baseClass": "IProjectView", "baseClass": "IProjectView",
"functions": { "functions": {
}, },

View File

@ -32,16 +32,14 @@ signals:
void selected(std::uint16_t index); void selected(std::uint16_t index);
}; };
class IProjectView : public QObject class IProjectView : public QWidget
{ {
Q_OBJECT Q_OBJECT
public: public:
using QObject::QObject; using QWidget::QWidget;
virtual ~IProjectView() {} virtual ~IProjectView() {}
virtual QWidget *widget() = 0;
}; };
// EOF // EOF

View File

@ -2,10 +2,9 @@
MapView::MapView(Project *parent) : MapView::MapView(Project *parent) :
IMapView(parent), IMapView(parent),
m_internal(parent),
m_mapModel(parent->mapModel()) m_mapModel(parent->mapModel())
{ {
setupUi(&m_internal); setMinimumSize(320, 240);
dbgPrintFunc(); dbgPrintFunc();
} }
@ -15,9 +14,17 @@ MapView::~MapView()
dbgPrintFunc(); dbgPrintFunc();
} }
QWidget *MapView::widget() void MapView::paintEvent(QPaintEvent *)
{ {
return &m_internal; [[maybe_unused]] QPainter painter{this};
}
// TODO: move to paint.cc
extern "C" {
void paint_point(QPainter *view, int x, int y)
{
view->drawPoint(x, y);
}
} }
// EOF // EOF

View File

@ -30,7 +30,7 @@ Project::Project(Type type) :
setAttribute(Qt::WA_DeleteOnClose); setAttribute(Qt::WA_DeleteOnClose);
listView->setModel(m_model); listView->setModel(m_model);
verticalLayout->insertWidget(0, m_view->widget()); verticalLayout->insertWidget(0, m_view);
connect(listView, connect(listView,
SIGNAL(doubleClicked(QModelIndex const &)), SIGNAL(doubleClicked(QModelIndex const &)),

View File

@ -15,11 +15,11 @@
#include <QMainWindow> #include <QMainWindow>
#include <QMdiSubWindow> #include <QMdiSubWindow>
#include <QMessageBox> #include <QMessageBox>
#include <QPainter>
#include "../ui/ui_about.h" #include "../ui/ui_about.h"
#include "../ui/ui_license.h" #include "../ui/ui_license.h"
#include "../ui/ui_mapprops.h" #include "../ui/ui_mapprops.h"
#include "../ui/ui_mapview.h"
#include "../ui/ui_menu.h" #include "../ui/ui_menu.h"
#include "../ui/ui_project.h" #include "../ui/ui_project.h"
@ -47,8 +47,7 @@ private:
QVariant data(const QModelIndex &index, int role) const override; QVariant data(const QModelIndex &index, int role) const override;
}; };
class MapView final : public IMapView, class MapView final : public IMapView
private Ui::MapView
{ {
Q_OBJECT Q_OBJECT
@ -56,10 +55,10 @@ public:
explicit MapView(Project *parent); explicit MapView(Project *parent);
~MapView(); ~MapView();
QWidget *widget(); protected:
void paintEvent(QPaintEvent *event) override;
private: private:
QWidget m_internal;
MapModel *const m_mapModel; MapModel *const m_mapModel;
}; };

View File

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MapView</class>
<widget class="QWidget" name="MapView">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Map View</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QGraphicsView" name="graphicsView"/>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>