自定义矩形可拖动及宽度大小的改变

//头文件

#pragma once

#include <QWidget>
#include "ui_Dlg_DayTime.h"
#include <QPainter>
#include <QJsonArray>
#include <QPixmap>
#include <QMap>
#define PADDING 6
enum Direction { UP = 0, DOWN = 1, LEFT, RIGHT, LEFTTOP, LEFTBOTTOM, RIGHTBOTTOM, RIGHTTOP, NONE };
class Dlg_DayTime : public QWidget
{
    Q_OBJECT

public:
    Dlg_DayTime(QWidget *parent = Q_NULLPTR);
    ~Dlg_DayTime();

    void paintEvent(QPaintEvent *event);

    void mousePressEvent(QMouseEvent *event);

    void mouseReleaseEvent(QMouseEvent *event);

    void mouseMoveEvent(QMouseEvent *event);

    void region(const QPoint &cursorGlobalPoint);

private:
    
    Ui::Dlg_DayTime ui;
    QJsonArray m_jsonArr;
    QPoint  m_curStartPos;
    QPoint  m_curEndPos;
    QPoint  m_tempPos;
    QPoint  m_movePos;

    bool    m_isPressed;

    int        m_nIndex;  
    QMap<int, QRect> m_map;
    Direction dir;        // 窗口大小改变时,记录改变方向
    int _startX;
    
};
 

//源文件

#include "Dlg_DayTime.h"
#include <QMouseEvent>
#include <QJsonDocument>
#include <QDebug>
Dlg_DayTime::Dlg_DayTime(QWidget *parent)
    : QWidget(parent), m_isPressed(false), m_nIndex(-1), m_movePos(0, 0)
    ,_startX(0)
{
    ui.setupUi(this);
    setPalette(QPalette(Qt::gray));
    this->setMouseTracking(true);
    setAutoFillBackground(true);
    setCursor(QCursor(Qt::ArrowCursor));
}

void Dlg_DayTime::region(const QPoint &cursorGlobalPoint)
{
    int nIndex = -1;
    for (int i = 0; i < m_map.size(); i++)
    {
        QRect tempRec = m_map[i];
        if (tempRec.contains(cursorGlobalPoint))
        {
            nIndex = i;
            break;
       &n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值