您可以使用自定义代理类来实现为 QTreeWidget 中的每一项设置上下 margin。具体步骤如下:
创建一个继承自
QStyledItemDelegate
的自定义代理类,并重写其sizeHint()
方法和paint()
方法。在
sizeHint()
方法中,根据需要增加行高以添加上下 margin。例如,以下代码将在默认行高(16像素)的基础上添加10个像素的上下 margin:
QSize MyDelegate::sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const {
QSize size = QStyledItemDelegate::sizeHint(option, index);
size.setHeight(size.height() + 20); // 添加10个像素的上下 margin
return size;
}
- 在
paint()
方法中,首先调用基类的方法以绘制项本身。然后,在项顶部和底部分别绘制矩形来表示上下 margin。例如:
void MyDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const {
// 绘制项本身
QStyledItemDelegate::paint(painter, option, index);
// 计算矩形区域并绘制
QRect rect = option.rect;
rect.setTop(rect.top() + 5); // 上边界加5像素
rect.setBottom(rect.bottom() - 5); // 下边界减5像素
painter->setPen(Qt::black);
painter->drawRect(rect);
}
- 将自定义代理类应用于 QTreeWidget 中的每个项。例如:
// 创建一个自定义代理类的实例
MyDelegate* delegate = new MyDelegate(this);
// 将该代理类应用于 QTreeWidget
treeWidget->setItemDelegate(delegate);
通过这些步骤,您可以在 QTreeWidget 中为每个项添加上下 margin。根据您的需要,您可以调整 sizeHint()
方法中添加的像素数以获得所需的效果。