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/license.ui
ui/mapprops.ui
ui/mapview.ui
ui/menu.ui
ui/points.ui
ui/project.ui

View File

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

View File

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

View File

@ -2,10 +2,9 @@
MapView::MapView(Project *parent) :
IMapView(parent),
m_internal(parent),
m_mapModel(parent->mapModel())
{
setupUi(&m_internal);
setMinimumSize(320, 240);
dbgPrintFunc();
}
@ -15,9 +14,17 @@ MapView::~MapView()
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

View File

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

View File

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