#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include #include #include QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H class GraphicsColorPathItem : public QGraphicsPolygonItem { public: GraphicsColorPathItem() { m_borderColor = QColor(0,0,0); m_borderSize = 0; } QColor borderColor() const { return m_borderColor; } void setBorderColor(const QColor &newBorderColor) { m_borderColor = newBorderColor; } QRectF boundingRect() const { return this->polygon().boundingRect(); } void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override { Q_UNUSED(option) Q_UNUSED(widget) painter->setRenderHint(QPainter::Antialiasing); QPen pen(m_borderColor); pen.setWidth(m_borderSize); painter->setPen(pen); painter->drawPolygon(polygon()); } int borderSize() const { return m_borderSize; } void setBorderSize(int newBorderSize) { m_borderSize = newBorderSize; } private: QColor m_borderColor; int m_borderSize; };