📄 cardsdelegate.cpp
字号:
#include "CardsDelegate.h"#include "CardsModel.h"#include <QModelIndex>#include <QPainter>QSize CardsDelegate::cellSize(10,10);QPolygon CardsDelegate::border;void CardsDelegate::paint(QPainter *p, const QStyleOptionViewItem &o, const QModelIndex &i) const{ QVariant v = i.model()->data(i, Qt::BackgroundColorRole); QColor color = v.value<QColor>(); QVariant font = i.model()->data(i, Qt::FontRole); if (!font.isNull()) p->setFont(font.value<QFont>()); p->setBrush(color); p->setPen(Qt::NoPen); int number = i.model()->data(i, Qt::DisplayRole).toInt(); if (number == CardsModel::MAX_CARDS_NUM) { p->drawRect(o.rect); return; } // get image from model // scale and draw the image v = i.model()->data(i, Qt::UserRole); QImage img = v.value<QImage>(); int w = o.rect.width(); int h = o.rect.height(); QImage img2=img.scaled(w, h); p->drawImage(o.rect, img2); // draw border QPolygon pol = border; pol.translate(o.rect.topLeft()); p->setBrush(Qt::darkYellow); p->drawPolygon(pol); // if "show number", draw numbers v = i.model()->data(i, Qt::UserRole + 1); bool bShowNumber = v.toBool(); if( bShowNumber ) { int x2 = w - 1; int y2 = h - 1; p->setPen(Qt::red); p->drawText(o.rect.x(), o.rect.y(), x2, y2, Qt::AlignLeft | Qt::AlignTop, QString::number(number)); } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -