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 に答える