#pragma once #include #include #include #include "lp_qt_utils.h" class LP_QT_UTILS_EXPORT lpRefLine : public QFrame { Q_OBJECT public: enum LP_REF_LINE_TYPE { LINE_VERT, LINE_HORI }; lpRefLine(LP_REF_LINE_TYPE line_type, const QString& uuid, QWidget *parent = nullptr); void setMoveable(bool moveable) { is_moveable_ = moveable; } void enableContextMenu(bool enable_menu); void setBoundingRect(QRect &rect) { bounding_rect_ = rect; } void setMargin(int margin) { margin_ = margin; } signals: void sgPosChanged(const QString& uuid, int pos); void sgClose(const QString& uuid); protected: virtual void enterEvent(QEvent *e) override; virtual void leaveEvent(QEvent *e) override; virtual void mouseMoveEvent(QMouseEvent* e) override; private: Q_SLOT void onCustomContextMenuRequested(const QPoint& pos); Q_SLOT void onClose(); private: LP_REF_LINE_TYPE line_type_{ LINE_VERT }; QString uuid_; int margin_{ 0 }; QRect bounding_rect_; bool is_moveable_{ true }; bool enable_menu_{ false }; QAction *action_delete_{ nullptr }; QMenu *context_menu_{ nullptr }; };