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

在Qt中的QListView中将边框设置为图像,qt,Qt,我正在将QPixmap设置为QStandardItem: QStandardItem* item = new QStandardItem(); item->setData( pixmap, Qt::DecorationRole ); 然后我执行appendRow()并将item添加到模型中 我在QListView中显示模型中的所有像素贴图。 如何仅为ListView中的第一项(图像)设置细边框?子类QStyledItemDelegate并覆盖其功能。使用此选项为项目绘制边框。然后将该委托

我正在将QPixmap设置为QStandardItem:

QStandardItem* item = new QStandardItem();
item->setData( pixmap, Qt::DecorationRole );
然后我执行
appendRow()
并将
item
添加到模型中

我在QListView中显示模型中的所有像素贴图。
如何仅为ListView中的第一项(图像)设置细边框?

子类
QStyledItemDelegate
并覆盖其功能。使用此选项为项目绘制边框。然后将该委托设置为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);
}
以及:

您不必在paint函数中检查行。你可以:

listView->setItemDelegate(new MyDelegate);
listView->setItemDelegateForRow(0, new MyDelegate);