Я пытаюсь установить маржу на верхней стороне Qtreeview ViewPort. /> Это добавляет пространство:
Но глюки вида, когда элемент парят, это разочарование, и нажимает также не нажимает. Такая же проблема возникает, пытаясь изменить прямоугольник, используя QStyleDiTemDelegate.#define qq qDebug().noquote().nospace()
class TreeDelegate : public QStyledItemDelegate
{
public:
TreeDelegate(QObject* parent) : QStyledItemDelegate(parent) {}
void initStyleOption(QStyleOptionViewItem* option, const QModelIndex& index) const override
{
//option->rect.moveTop(option->rect.y() + 20);
QStyledItemDelegate::initStyleOption(option, index);
}
void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const override
{
QStyledItemDelegate::paint(painter, option, index);
}
};
class MyTreeView : public QTreeView
{
public:
MyTreeView(QWidget* parent = nullptr) : QTreeView(parent)
{
QStandardItemModel* model = new QStandardItemModel(this);
setModel(model);
setIndentation(0);
setRootIsDecorated(false);
model->setHorizontalHeaderItem(0, new QStandardItem("col1"));
model->setHorizontalHeaderItem(1, new QStandardItem("col2"));
for (int i =0; i< 22; i++)
{
QList row;
for (int j = 0; j < 2; j++)
{
row.append(new QStandardItem(QString::number(i)));
}
model->appendRow(row);
}
setViewportMargins(0, 20, 0, 0);
setItemDelegate(new TreeDelegate(this));
connect(new QShortcut(QKeySequence(Qt::Key_F4), this), &QShortcut::activated, [&]
{
setViewportMargins(0, 20, 0, 0);
});
connect(new QShortcut(QKeySequence(Qt::Key_F6), this), &QShortcut::activated, [&]
{
qq
Подробнее здесь: https://stackoverflow.com/questions/794 ... -qtreeview