0

我将 QPixmap 设置为 QStandardItem:

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

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

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

4

1 回答 1

1

子类化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);
}

为您的 QListView 设置委托

listView->setItemDelegate(new MyDelegate);

您不必检查绘图功能中的行。您可以为特定行设置委托

listView->setItemDelegateForRow(0, new MyDelegate);
于 2013-08-07T11:30:08.633 回答