logplus/logPlus/TransparentDraggableRect.h

98 lines
2.5 KiB
C
Raw Normal View History

2025-10-29 17:23:30 +08:00
#ifndef TRANSPARENTDRAGGABLERECT_H
#define TRANSPARENTDRAGGABLERECT_H
#include <QObject>
#include "qmycustomplot.h"
#include <QString>
#include <QMenu>
#pragma execution_character_set("utf-8") // 强制指定执行字符集为 UTF-8
class TransparentDraggableRect : public QObject
{
Q_OBJECT
public:
2025-12-22 18:22:45 +08:00
explicit TransparentDraggableRect(QMyCustomPlot *parentPlot, QString strUuid="", double minWidth = 1.0, QString strTitle = "");
2025-10-29 17:23:30 +08:00
2025-12-22 18:22:45 +08:00
~TransparentDraggableRect();
2025-10-29 17:23:30 +08:00
//设置最小宽度
2025-12-22 18:22:45 +08:00
void setMinWidth(double minWidth);
2025-10-29 17:23:30 +08:00
//设置标题
2025-12-22 18:22:45 +08:00
void setTitle(QString strTitle);
2025-10-29 17:23:30 +08:00
// 设置矩形范围
2025-12-22 18:22:45 +08:00
void setRange(double left_Low, double right_Hight);
2025-10-29 17:23:30 +08:00
// 获取当前范围
2025-12-22 18:22:45 +08:00
QCPRange getRange();
2025-10-29 17:23:30 +08:00
// 设置矩形颜色
2025-12-22 18:22:45 +08:00
void setColor(const QColor &color);
2025-10-29 17:23:30 +08:00
// 删除框图
2025-12-22 18:22:45 +08:00
void deleteRect();
2025-10-29 17:23:30 +08:00
//设置顶深
void setUpper(double upper);
//设置底深
void setLower(double lower);
2025-10-29 17:23:30 +08:00
signals:
void rangeChanged(QCPRange newRange);
private:
2025-12-22 18:22:45 +08:00
void initRect();
void updateHandles() ;
2025-10-29 17:23:30 +08:00
private slots:
void onDelRect(); //删除
void setItemDepthOffset(); //设置深度移动量
2025-12-22 18:22:45 +08:00
void onMousePress(QMouseEvent *event);
void onMouseMove(QMouseEvent *event);
void onMouseRelease(QMouseEvent *event);
double getMyLower();
double getMyUpper();
public:
2025-10-29 17:23:30 +08:00
QMyCustomPlot *mPlot;
QCPItemRect *mRect;
QCPItemRect *mLeftHandle;
QCPItemRect *mRightHandle;
QCPItemPixmap *mPixmap;
QCPItemText *mItemTitle;
QString mstrTitle="";
QString m_strUuid = "";
//以下字段为临时添加,后面需要数据组集成
QFont wordfont = QFont("Arial", 12, QFont::Bold); //文字字体
QColor fontColor = Qt::black; //字体颜色
QColor backgroundColor = Qt::white; //背景颜色
int leftAndRightAlign; //左右对齐方式
int upAndDownAlign; //上下对齐方式
// BEGIN_ENUM(LeftAndRightDesc)
// { 0,L"中间对齐" },
// { 1,L"左对齐" },
// { 2,L"右对齐" }
// END_ENUM(LeftAndRightDesc);
// BEGIN_ENUM(UpAndDownDesc)
// { 0,L"上对齐" },
// { 1,L"中间对齐" },
// { 2,L"下对齐" }
// END_ENUM(UpAndDownDesc);
2025-10-29 17:23:30 +08:00
enum DragMode { DragNone, DragLeft, DragRight, DragRect };
DragMode mDragMode = DragNone;
//double mDragStartX = 0;
double mDragStartY = 0;
QCPRange mDragStartRange;
// 添加最小宽度成员变量
double mMinWidth;
};
#endif // TRANSPARENTDRAGGABLERECT_H