#pragma once #include #include 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; };