我正在将QPixmap设置为QStandardItem:
QStandardItem* item = new QStandardItem();
item->setData( pixmap, Qt::DecorationRole );
然后我appendRow()
并将item
添加到模型中。
我在QListView中显示模型中的所有像素图。 如何将薄边框仅设置为ListView中的第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);