diff --git a/CMakeLists.txt b/CMakeLists.txt index 512349a..ba0ad82 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,12 @@ project(DbGuiLib) +find_package(Qt5Core CONFIG REQUIRED) +find_package(Qt5Gui CONFIG REQUIRED) +find_package(Qt5Widgets CONFIG REQUIRED) +find_package(Qt5LinguistTools CONFIG REQUIRED) + set(HEADERS + canvaswidget.h dbguilib_global.h editorfactory.h ledindicator.h @@ -15,6 +21,7 @@ set(HEADERS ) set(SOURCES + canvaswidget.cpp editorfactory.cpp ledindicator.cpp matrix4x4widget.cpp diff --git a/canvaswidget.cpp b/canvaswidget.cpp new file mode 100644 index 0000000..22c9374 --- /dev/null +++ b/canvaswidget.cpp @@ -0,0 +1,30 @@ +#include "canvaswidget.h" + +// Qt includes +#include + +CanvasWidget::CanvasWidget(QWidget *parent) : + QWidget(parent) +{ +} + +void CanvasWidget::setImage(const QImage &image) +{ + m_image = image; + repaint(); +} + +void CanvasWidget::paintEvent(QPaintEvent *event) +{ + Q_UNUSED(event) + + const double scale = std::min(double(width()) / m_image.width(), + double(height()) / m_image.height()); + + const QRect imageRect(QPoint(), m_image.size() * scale); + + QPainter painter; + painter.begin(this); + painter.drawImage(imageRect, m_image); + painter.end(); +} diff --git a/canvaswidget.h b/canvaswidget.h new file mode 100644 index 0000000..76668a4 --- /dev/null +++ b/canvaswidget.h @@ -0,0 +1,21 @@ +#pragma once + +#include "dbguilib_global.h" +#include + +#include + +class DBGUILIB_EXPORT CanvasWidget : public QWidget +{ +public: + explicit CanvasWidget(QWidget *parent = Q_NULLPTR); + +public Q_SLOTS: + void setImage(const QImage &image); + +protected: + void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; + +private: + QImage m_image; +};