在 Qt 的 QListView 中为图像设置边框
Posted
技术标签:
【中文标题】在 Qt 的 QListView 中为图像设置边框【英文标题】:Set border to an image in QListView in Qt 【发布时间】:2013-08-07 10:51:44 【问题描述】:我正在将 QPixmap 设置为 QStandardItem:
QStandardItem* item = new QStandardItem();
item->setData( pixmap, Qt::DecorationRole );
然后我执行appendRow()
并将item
添加到模型中。
我在 QListView 中显示模型中的所有像素图。 如何为 ListView 中的第一项(图像)设置细边框?
【问题讨论】:
【参考方案1】:子类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);
【讨论】:
以上是关于在 Qt 的 QListView 中为图像设置边框的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在 PyQt/PySide2 中为 QLineEdit 的文本制作“破碎”边框