Самый простой и быстрый способ увеличить вертикальный размер элемента списка, таблицы или дерева в соответсвующих виджетах QListView, QTableView, QTreeView - это создать класс делегата, а в нем переопределить метод sizeHint().
Делается это следующим образом:
Заголовок:
#include <QItemDelegate>
class HelpDelegate : public QItemDelegate
{
Q_OBJECT
public:
HelpDelegate(QObject *parent = nullptr);
virtual QSize sizeHint(const QStyleOptionViewItem &option,
const QModelIndex &index) const override;
};
Реализация:
#include "help_delegate.h"
HelpDelegate::HelpDelegate(QObject *parent) : QItemDelegate(parent)
{
}
QSize HelpDelegate::sizeHint(const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
QSize size=QItemDelegate::sizeHint(option, index);
size.setHeight(28); // Принудительная установка высоты делегата
return size;
}
После чего делегат подключается к виду:
ui->treeView->setItemDelegate( new HelpDelegate( ui->treeView ) );
Этот метод хорош тем, что размер элемента и выбираемая мышкой область элемента будут абсолютно совпадать, и вертикальная область элемента будет протягиваться ровно до границы, где начинается область другого элемента.
Если же попытаться решить эту же задачу путем применения для элемента прозрачной иконки размером 1 x h пикселей (где h - это целевой размер элемента), то визуально эффект будет практически тот же самый, но ровно до того момента, пока к элементу не будет подведена мышка. Окажется, что расстояние между элементами увеличилось, а вот вертикальный размер элемента остался прежним.
Если задача увеличения вертикального размера элемента исходила из того, чтобы в элемент было легче попадать мышкой, то она может быть правильно решена именно первым способом а не использованием невидимой иконки. Тем более что такое решение через иконку не позволить использовать иконки возле элемента в своем первоначальном назначении.