Qt 为 children Qtreeview 中的项目设置不同的高度

Qt set different heights for items in Qtreeview for children

我目前正在通过样式表定义 QTreeView 中项目的高度

QTreeView {
    background: palette(window);
    color: palette(text);
    border: none;
}

QTreeView::item {
    height: 40px;
    padding-top: 0.5ex;
    padding-bottom: 0.5ex;
    margin: 2px;
}

有了这个,树中的所有项目都将具有相同的高度。是否可以为 children 定义不同的高度?

我不确定这是否可以通过样式表完成。实现此目的的正常方法是覆盖 QAbstractItemModel::data 并使其 return 特定值与 Qt::SizeHintRole 数据角色关联。

QVariant new_model::data (const QModelIndex &index, int role) const
{
    if (role == Qt::SizeHintRole) {

        /*
         * Calculate required size hint based on model data etc.
         */
        QSize size = ...;
        return size;
    }

    /*
     * Defer to base class implementation.
     */
    return base_class::data(index, role);
}