#pragma once
#include <QStyledItemDelegate>
#include <QMargins>

class PaddedItemDelegate final : public QStyledItemDelegate {
    Q_OBJECT

public:
    explicit PaddedItemDelegate(const QMargins &margins, QObject *parent = nullptr)
        : QStyledItemDelegate(parent), m_margins(margins) {
    }

    void initStyleOption(QStyleOptionViewItem *option, const QModelIndex &index) const override {
        QStyledItemDelegate::initStyleOption(option, index);
        // «вырезаем» рамки со всех сторон
        option->rect = option->rect.adjusted(
            m_margins.left(),
            m_margins.top(),
            -m_margins.right(),
            -m_margins.bottom()
        );
    }

    // расширяем sizeHint — чтобы ResizeToContents «увидел» отступы
    [[nodiscard]] QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override {
        const QSize baseSize = QStyledItemDelegate::sizeHint(option, index);
        return QSize(
            baseSize.width() + m_margins.left() + m_margins.right(),
            baseSize.height() + m_margins.top() + m_margins.bottom()
        );
    }

private:
    QMargins m_margins;
};
