在Qt中的QListView中将边框设置为图像

时间:2013-08-07 10:51:44

标签: qt

我正在将QPixmap设置为QStandardItem:

QStandardItem* item = new QStandardItem();
item->setData( pixmap, Qt::DecorationRole );

然后我appendRow()并将item添加到模型中。

我在QListView中显示模型中的所有像素图。 如何将薄边框仅设置为ListView中的第1个项目(图像)?

1 个答案:

答案 0 :(得分:0)

子类QStyledItemDelegate并覆盖它的paint函数。使用此选项为您的项目绘制边框。然后将该委托设置为QListView。

示例:

void MyDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
    if(index.row() == 0)
    {
        painter->setPen(QPen(Qt::red, 2));
        painter->drawRect(option.rect.x()+1, option.rect.y(), option.rect.width()-1, option.rect.height());
    }
    QStyledItemDelegate::paint(painter, option, index);
}

set the delegate for your QListView

listView->setItemDelegate(new MyDelegate);

您无需检查绘画功能中的行。你可以set the delegate for a specific row

listView->setItemDelegateForRow(0, new MyDelegate);