QT开发中文网

C++ QTreeWidget 设置每一项的 上下margin

您可以使用自定义代理类来实现为 QTreeWidget 中的每一项设置上下 margin。具体步骤如下:

  1. 创建一个继承自 QStyledItemDelegate 的自定义代理类,并重写其 sizeHint() 方法和 paint() 方法。

  2. 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;
}
  1. 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);
}
  1. 将自定义代理类应用于 QTreeWidget 中的每个项。例如:
// 创建一个自定义代理类的实例
MyDelegate* delegate = new MyDelegate(this);
// 将该代理类应用于 QTreeWidget
treeWidget->setItemDelegate(delegate);

通过这些步骤,您可以在 QTreeWidget 中为每个项添加上下 margin。根据您的需要,您可以调整 sizeHint() 方法中添加的像素数以获得所需的效果。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=2709

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?