本文整理汇总了C++中QStyle::drawItemText方法的典型用法代码示例。如果您正苦于以下问题:C++ QStyle::drawItemText方法的具体用法?C++ QStyle::drawItemText怎么用?C++ QStyle::drawItemText使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QStyle
的用法示例。
在下文中一共展示了QStyle::drawItemText方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: paint
/**
* @todo enable eliding (use QFontMetrics::elidedText() )
*/
void bicItemDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const
{
QStyleOptionViewItem opt = option;
initStyleOption(&opt, index);
// Background
QStyle *style = opt.widget ? opt.widget->style() : QApplication::style();
style->drawPrimitive(QStyle::PE_PanelItemViewItem, &opt, painter, opt.widget);
const int margin = style->pixelMetric(QStyle::PM_FocusFrameHMargin) + 1;
const QRect textArea = QRect(opt.rect.x() + margin, opt.rect.y() + margin, opt.rect.width() - 2 * margin, opt.rect.height() - 2 * margin);
// Paint name
painter->save();
QFont smallFont = getSmallFont(opt);
QFontMetrics metrics(opt.font);
QFontMetrics smallMetrics(smallFont);
QRect nameRect = style->alignedRect(opt.direction, Qt::AlignBottom, QSize(textArea.width(), smallMetrics.lineSpacing()), textArea);
painter->setFont(smallFont);
style->drawItemText(painter, nameRect, Qt::AlignBottom, QApplication::palette(), true, index.model()->data(index, bicModel::InstitutionNameRole).toString(), option.state & QStyle::State_Selected ? QPalette::HighlightedText : QPalette::Mid);
painter->restore();
// Paint BIC
painter->save();
QFont normal = painter->font();
normal.setBold(true);
painter->setFont(normal);
QRect bicRect = style->alignedRect(opt.direction, Qt::AlignTop, QSize(textArea.width(), metrics.lineSpacing()), textArea);
const QString bic = index.model()->data(index, Qt::DisplayRole).toString();
style->drawItemText(painter, bicRect, Qt::AlignTop, QApplication::palette(), true, bic, option.state & QStyle::State_Selected ? QPalette::HighlightedText : QPalette::Text);
painter->restore();
}
示例2: paint
/** @todo elide texts */
void ibanBicItemDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const
{
QStyleOptionViewItem opt = option;
initStyleOption(&opt, index);
// Background
QStyle *style = opt.widget ? opt.widget->style() : QApplication::style();
style->drawPrimitive(QStyle::PE_PanelItemViewItem, &opt, painter, opt.widget);
const int margin = style->pixelMetric(QStyle::PM_FocusFrameHMargin) + 1;
const QRect textArea = QRect(opt.rect.x() + margin, opt.rect.y() + margin, opt.rect.width() - 2 * margin, opt.rect.height() - 2 * margin);
// Do not paint text if the edit widget is shown
const QAbstractItemView *view = qobject_cast<const QAbstractItemView *>(opt.widget);
if (view && view->indexWidget(index))
return;
// Get data
payeeIdentifierTyped<payeeIdentifiers::ibanBic> ibanBic = ibanBicByIndex(index);
// Paint Bic
painter->save();
const QFont smallFont = painter->font();
const QFontMetrics metrics(opt.font);
const QFontMetrics smallMetrics(smallFont);
const QRect bicRect = style->alignedRect((opt.direction == Qt::RightToLeft) ? Qt::LeftToRight : Qt::RightToLeft, Qt::AlignTop, QSize(textArea.width(), smallMetrics.lineSpacing()),
QRect(textArea.left(), metrics.lineSpacing() + textArea.top(), textArea.width(), smallMetrics.lineSpacing())
);
painter->setFont(smallFont);
style->drawItemText(painter, bicRect, Qt::AlignBottom | Qt::AlignRight, QApplication::palette(), true, ibanBic->storedBic(), opt.state & QStyle::State_Selected ? QPalette::HighlightedText : QPalette::Text);
painter->restore();
// Paint Bank name
painter->save();
const QRect nameRect = style->alignedRect(opt.direction, Qt::AlignTop, QSize(textArea.width(), smallMetrics.lineSpacing()),
QRect(textArea.left(), metrics.lineSpacing() + textArea.top(), textArea.width(), smallMetrics.lineSpacing())
);
style->drawItemText(painter, nameRect, Qt::AlignBottom, QApplication::palette(), true, ibanBic->institutionName(), opt.state & QStyle::State_Selected ? QPalette::HighlightedText : QPalette::Text);
painter->restore();
// Paint IBAN
painter->save();
QFont normal = painter->font();
normal.setBold(true);
painter->setFont(normal);
const QRect ibanRect = style->alignedRect(opt.direction, Qt::AlignTop, QSize(textArea.width(), metrics.lineSpacing()), textArea);
const QString bic = index.model()->data(index, Qt::DisplayRole).toString();
style->drawItemText(painter, ibanRect, Qt::AlignTop, QApplication::palette(), true, ibanBic->paperformatIban(), opt.state & QStyle::State_Selected ? QPalette::HighlightedText : QPalette::Text);
painter->restore();
// Paint type
painter->save();
QRect typeRect = style->alignedRect(opt.direction, Qt::AlignTop | Qt::AlignRight, QSize(textArea.width() / 5, metrics.lineSpacing()), textArea);
style->drawItemText(painter, typeRect, Qt::AlignTop | Qt::AlignRight, QApplication::palette(), true, i18n("IBAN & BIC"), opt.state & QStyle::State_Selected ? QPalette::HighlightedText : QPalette::Text);
painter->restore();
}
示例3: option
void K3b::DeviceDelegate::paint( QPainter* painter, const QStyleOptionViewItem& optionOrig, const QModelIndex& index ) const
{
if ( index.data( K3b::DeviceModel::IsDevice ).toBool() ) {
painter->save();
painter->setRenderHint(QPainter::Antialiasing);
// HACK: we erase the branch
QStyleOptionViewItemV4 option( optionOrig );
option.rect.setLeft( 0 );
painter->fillRect( option.rect, option.palette.base() );
QStyle* style = QApplication::style();
const FontsAndMetrics fam( option.font );
const QPalette::ColorRole textRole = (option.state & QStyle::State_Selected) ?
QPalette::HighlightedText : QPalette::Text;
const QRect itemRect( option.rect.left() + fam.margin, option.rect.top() + fam.margin,
option.rect.width() - 2*fam.margin, option.rect.height() - 2*fam.margin );
const QSize iconSize( itemRect.height(), itemRect.height() );
const QSize mediumSize( itemRect.width() - iconSize.width() - fam.margin,
itemRect.height() - fam.spacing - fam.deviceFontM.height() );
const QSize devicemSize( itemRect.width() - iconSize.width() - fam.margin,
itemRect.height() - fam.spacing - fam.mediumFontM.height() );
const QRect iconRect = style->alignedRect( option.direction, Qt::AlignLeft | Qt::AlignVCenter, iconSize, itemRect );
const QRect mediumRect = style->alignedRect( option.direction, Qt::AlignRight | Qt::AlignTop, mediumSize, itemRect );
const QRect deviceRect = style->alignedRect( option.direction, Qt::AlignRight | Qt::AlignBottom, devicemSize, itemRect );
// draw background
style->drawPrimitive( QStyle::PE_PanelItemViewItem, &option, painter );
// draw decoration
QPixmap pixmap = decoration( option, index, iconSize );
painter->drawPixmap( iconRect, pixmap );
// draw medium text
painter->setFont( fam.mediumFont );
QString text = index.data( Qt::DisplayRole ).toString();
style->drawItemText( painter, mediumRect, option.displayAlignment, option.palette,
option.state & QStyle::State_Enabled,
fam.mediumFontM.elidedText( text, option.textElideMode, mediumRect.width() ),
textRole );
// draw fixed device text
painter->setFont( fam.deviceFont );
text = index.data( K3b::DeviceModel::Vendor ).toString() + " - " + index.data( K3b::DeviceModel::Description ).toString();
style->drawItemText( painter, deviceRect, option.displayAlignment, option.palette,
option.state & QStyle::State_Enabled,
fam.deviceFontM.elidedText( text, option.textElideMode, deviceRect.width() ),
textRole );
painter->restore();
}
else {
KFileItemDelegate::paint( painter, optionOrig, index );
}
}
示例4: paint
void UserDelegate::paint(QPainter * painter, const QStyleOptionViewItem &option, const QModelIndex &index) const {
const QAbstractItemModel *m = index.model();
const QModelIndex idxc1 = index.sibling(index.row(), 1);
QVariant data = m->data(idxc1);
QList<QVariant> ql = data.toList();
painter->save();
QStyleOptionViewItemV4 o = option;
initStyleOption(&o, index);
QStyle *style = o.widget->style();
QIcon::Mode iconMode = QIcon::Normal;
QPalette::ColorRole colorRole = ((o.state & QStyle::State_Selected) ? QPalette::HighlightedText : QPalette::Text);
#if defined(Q_OS_WIN)
// Qt's Vista Style has the wrong highlight color for treeview items
// We can't check for QStyleSheetStyle so we have to search the children list search for a QWindowsVistaStyle
QList<QObject *> hierarchy = style->findChildren<QObject *>();
hierarchy.insert(0, style);
foreach (QObject *obj, hierarchy) {
if (QString::fromUtf8(obj->metaObject()->className()) == QString::fromUtf8("QWindowsVistaStyle")) {
colorRole = QPalette::Text;
break;
}
}
#endif
// draw background
style->drawPrimitive(QStyle::PE_PanelItemViewItem, &o, painter, o.widget);
// resize rect to exclude the flag icons
o.rect = option.rect.adjusted(0, 0, -FLAG_DIMENSION * ql.count(), 0);
// draw icon
QRect decorationRect = style->subElementRect(QStyle::SE_ItemViewItemDecoration, &o, o.widget);
o.icon.paint(painter, decorationRect, o.decorationAlignment, iconMode, QIcon::On);
// draw text
QRect textRect = style->subElementRect(QStyle::SE_ItemViewItemText, &o, o.widget);
QString itemText = o.fontMetrics.elidedText(o.text, o.textElideMode, textRect.width());
painter->setFont(o.font);
style->drawItemText(painter, textRect, o.displayAlignment, o.palette, true, itemText, colorRole);
// draw flag icons to original rect
QRect ps = QRect(option.rect.right() - (ql.size() * FLAG_DIMENSION),
option.rect.y(), ql.size() * FLAG_DIMENSION,
option.rect.height());
for (int i = 0; i < ql.size(); ++i) {
QRect r = ps;
r.setSize(QSize(FLAG_ICON_DIMENSION, FLAG_ICON_DIMENSION));
r.translate(i * FLAG_DIMENSION + FLAG_ICON_PADDING, FLAG_ICON_PADDING);
QRect p = QStyle::alignedRect(option.direction, option.decorationAlignment, r.size(), r);
qvariant_cast<QIcon>(ql[i]).paint(painter, p, option.decorationAlignment, iconMode, QIcon::On);
}
painter->restore();
}
示例5: paint
void NoteItemDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const
{
QStyle* style = KApplication::style();
style->drawPrimitive(QStyle::PE_PanelItemViewItem, &option, painter);
QRect rect = option.rect;
rect.adjust( m_margin, m_margin, -m_margin, -m_margin );
Nepomuk2::Resource res = index.data( Nepomuk2::Utils::SimpleResourceModel::ResourceRole ).value<Nepomuk2::Resource>();
QString plainTextContent = res.property( NIE::plainTextContent() ).toString();
QDateTime creationDate = res.property( NAO::created() ).toDateTime();
//TODO: Find a way to convert this date into "4 hours ago" format
QString dateString = creationDate.toLocalTime().toString();
painter->save();
QFont f = painter->font();
f.setBold( true );
painter->setFont( f );
style->drawItemText( painter, rect, Qt::AlignLeft | Qt::AlignTop, option.palette, true, dateString );
painter->restore();
rect.setY( rect.y() + QFontMetrics(f).height()/* + m_margin */);
//
// Draw the excerpt
//
QTextDocument textDocument;
textDocument.setTextWidth( rect.width() );
QFont font = textDocument.defaultFont();
font.setItalic( true );
textDocument.setDefaultFont( font );
QFontMetrics fm( font );
int numLines = rect.height() / fm.height();
int charPerLine = rect.width() / fm.averageCharWidth();
int l = (numLines-2) * charPerLine; // one line less for ending, and one line for padding
QString text;
// FIXME: There may be a case where some part of the text gets repeated before and after the ...
if( l < plainTextContent.length() ) {
text = plainTextContent.left( l );
text += QLatin1String(" .... ");
text += plainTextContent.right( charPerLine-10 );
}
else {
text = plainTextContent;
}
textDocument.setPlainText( text.simplified() );
painter->save();
painter->translate( rect.topLeft() );
textDocument.drawContents( painter );
painter->restore();
}
示例6: paint
void ItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
int row = index.row();
ItemWidget *w = m_cache[row];
if (w == NULL)
return;
const QRect &rect = option.rect;
bool isSelected = option.state & QStyle::State_Selected;
/* render background (selected, alternate, ...) */
QStyle *style = m_view->style();
style->drawControl(QStyle::CE_ItemViewItem, &option, painter, m_view);
/* render number */
if (m_showRowNumber) {
const QString num = QString::number(row);
QPalette::ColorRole role = isSelected ? QPalette::HighlightedText : QPalette::Text;
painter->save();
painter->setFont(m_rowNumberFont);
style->drawItemText(painter, rect.translated(m_hMargin / 2, m_vMargin), 0,
m_rowNumberPalette, true, num,
role);
painter->restore();
}
/* highlight search string */
w->setHighlight(m_re, m_foundFont, m_foundPalette);
/* text color for selected/unselected item */
QWidget *ww = w->widget();
if ( ww->property(propertySelectedItem) != isSelected ) {
ww->setProperty(propertySelectedItem, isSelected);
if ( !ww->property("CopyQ_no_style").toBool() ) {
ww->setStyle(style);
foreach (QWidget *child, ww->findChildren<QWidget *>())
child->setStyle(style);
ww->update();
}
}
}
示例7: paint
void ItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
int row = index.row();
ItemWidget *w = m_cache[row];
if (w == NULL)
return;
const QRect &rect = option.rect;
/* render background (selected, alternate, ...) */
QStyle *style = m_parent->style();
style->drawControl(QStyle::CE_ItemViewItem, &option, painter);
QPalette::ColorRole role = option.state & QStyle::State_Selected ?
QPalette::HighlightedText : QPalette::Text;
/* render number */
QRect numRect(0, 0, 0, 0);
if (m_showNumber) {
QString num = QString::number(row) + " ";
painter->save();
painter->setFont(m_numberFont);
style->drawItemText(painter, rect.translated(4, 4), 0,
m_numberPalette, true, num,
role);
painter->restore();
numRect = style->itemTextRect( QFontMetrics(m_numberFont), rect, 0,
true, num );
}
/* highlight search string */
w->setHighlight(m_re, m_foundFont, m_foundPalette);
/* text color for selected/unselected item */
QPalette palette = w->widget()->palette();
palette.setColor( QPalette::Text, option.palette.color(role) );
w->widget()->setPalette(palette);
/* render widget */
w->widget()->show();
}
示例8: paintEvent
void QMirrorLabel::paintEvent(QPaintEvent *event)
{
QStyle *style = QWidget::style();
QPainter painter(this);
drawFrame(&painter);
QRect cr = contentsRect();
cr.adjust(margin(), margin(), -margin(), -margin());
int align = QStyle::visualAlignment(layoutDirection(), QFlag(alignment()));
if(!text().isNull())
{
painter.save();
painter.scale(-1.0, 1.0);
QPointF translationOffset;
translationOffset.setX(qreal(-cr.width()));
translationOffset.setY(0.0);
painter.translate(translationOffset);
style->drawItemText(&painter, cr, align, palette(), isEnabled(), text(), foregroundRole());
painter.restore();
}
if(pixmap())
{
QPixmap pix = *pixmap();
painter.save();
painter.scale(-1.0, 1.0);
QPointF translationOffset;
translationOffset.setX(qreal(-cr.width()));
translationOffset.setY(0.0);
painter.translate(translationOffset);
style->drawItemPixmap(&painter, cr, align, pix);
painter.restore();
}
}
示例9: paintEvent
void NQTokenEditItem::paintEvent(QPaintEvent *)
{
QStyle *style = QWidget::style();
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
QRect fr = frameRect();
QStyleOption opt;
opt.initFrom(this);
painter.setPen(Qt::NoPen);
painter.setBrush(QBrush(itemColor_.darker()));
painter.drawRoundedRect(fr, fr.height()/2, fr.height()/2);
QRect fr2;
fr2.setX(1);
fr2.setY(1);
fr2.setWidth(fr.width()-2);
fr2.setHeight(fr.height()-2);
painter.setBrush(QBrush(itemColor_));
painter.drawRoundedRect(fr2, fr2.height()/2, fr2.height()/2);
fr2.setY(verticalMargin_*2);
fr2.setHeight(lineHeight_);
style->drawItemText(&painter, fr2, Qt::AlignHCenter,
opt.palette, true, layout_.text(), foregroundRole());
if (currentCursorPos_!=-1) {
QPointF topLeft = fr2.topLeft();
topLeft.setX(topLeft.x() + horizontalMargin_ - 2);
topLeft.setY(topLeft.y());
layout_.drawCursor(&painter, topLeft, currentCursorPos_, 1);
}
}
示例10: paintEvent
/*!\reimp
*/
void QLabel::paintEvent(QPaintEvent *)
{
Q_D(QLabel);
QStyle *style = QWidget::style();
QPainter painter(this);
drawFrame(&painter);
QRect cr = contentsRect();
cr.adjust(d->margin, d->margin, -d->margin, -d->margin);
int align = QStyle::visualAlignment(d->isTextLabel ? d->textDirection()
: layoutDirection(), QFlag(d->align));
#if QT_CONFIG(movie)
if (d->movie) {
if (d->scaledcontents)
style->drawItemPixmap(&painter, cr, align, d->movie->currentPixmap().scaled(cr.size()));
else
style->drawItemPixmap(&painter, cr, align, d->movie->currentPixmap());
}
else
#endif
if (d->isTextLabel) {
QRectF lr = d->layoutRect().toAlignedRect();
QStyleOption opt;
opt.initFrom(this);
#ifndef QT_NO_STYLE_STYLESHEET
if (QStyleSheetStyle* cssStyle = qobject_cast<QStyleSheetStyle*>(style)) {
cssStyle->styleSheetPalette(this, &opt, &opt.palette);
}
#endif
if (d->control) {
#ifndef QT_NO_SHORTCUT
const bool underline = (bool)style->styleHint(QStyle::SH_UnderlineShortcut, 0, this, 0);
if (d->shortcutId != 0
&& underline != d->shortcutCursor.charFormat().fontUnderline()) {
QTextCharFormat fmt;
fmt.setFontUnderline(underline);
d->shortcutCursor.mergeCharFormat(fmt);
}
#endif
d->ensureTextLayouted();
QAbstractTextDocumentLayout::PaintContext context;
// Adjust the palette
context.palette = opt.palette;
if (foregroundRole() != QPalette::Text && isEnabled())
context.palette.setColor(QPalette::Text, context.palette.color(foregroundRole()));
painter.save();
painter.translate(lr.topLeft());
painter.setClipRect(lr.translated(-lr.x(), -lr.y()));
d->control->setPalette(context.palette);
d->control->drawContents(&painter, QRectF(), this);
painter.restore();
} else {
int flags = align | (d->textDirection() == Qt::LeftToRight ? Qt::TextForceLeftToRight
: Qt::TextForceRightToLeft);
if (d->hasShortcut) {
flags |= Qt::TextShowMnemonic;
if (!style->styleHint(QStyle::SH_UnderlineShortcut, &opt, this))
flags |= Qt::TextHideMnemonic;
}
style->drawItemText(&painter, lr.toRect(), flags, opt.palette, isEnabled(), d->text, foregroundRole());
}
} else
#ifndef QT_NO_PICTURE
if (d->picture) {
QRect br = d->picture->boundingRect();
int rw = br.width();
int rh = br.height();
if (d->scaledcontents) {
painter.save();
painter.translate(cr.x(), cr.y());
painter.scale((double)cr.width()/rw, (double)cr.height()/rh);
painter.drawPicture(-br.x(), -br.y(), *d->picture);
painter.restore();
} else {
int xo = 0;
int yo = 0;
if (align & Qt::AlignVCenter)
yo = (cr.height()-rh)/2;
else if (align & Qt::AlignBottom)
yo = cr.height()-rh;
if (align & Qt::AlignRight)
xo = cr.width()-rw;
else if (align & Qt::AlignHCenter)
xo = (cr.width()-rw)/2;
painter.drawPicture(cr.x()+xo-br.x(), cr.y()+yo-br.y(), *d->picture);
}
} else
#endif
if (d->pixmap && !d->pixmap->isNull()) {
QPixmap pix;
if (d->scaledcontents) {
QSize scaledSize = cr.size() * devicePixelRatioF();
if (!d->scaledpixmap || d->scaledpixmap->size() != scaledSize) {
if (!d->cachedimage)
d->cachedimage = new QImage(d->pixmap->toImage());
//.........这里部分代码省略.........
示例11: paint
void BlogListDelegate::paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const
{
BlogListWidget * listWidget = qobject_cast<BlogListWidget *>(this->parent());
if (listWidget == NULL) return;
QStyle * style = listWidget->style();
if (style == NULL) return;
painter->save();
QFont itemFont(painter->font());
style->drawPrimitive(QStyle::PE_PanelItemViewItem, &option, painter, listWidget);
QPixmap pixmap = qvariant_cast<QPixmap>(index.data(IconRole));
QString title = index.data(TitleRole).toString();
QString date = index.data(DateRole).toString();
QString author = index.data(AuthorRole).toString();
QString intro = index.data(IntroRole).toString();
// QRect rect;
int imageSpace = ImageSpace + 10;
// TITLE
painter->setPen(listWidget->titleTextColor());
QFont titleFont(listWidget->titleTextFontFamily());
titleFont.setPixelSize(pixelSize(listWidget->titleTextFontSize()));
painter->setFont(titleFont);
QRect rect = option.rect.adjusted(imageSpace, TopSpace, 0, 0);
style->drawItemText(painter, rect, Qt::AlignLeft, option.palette, true, title);
QFontMetrics titleFontMetrics(titleFont);
// INTRO
painter->setPen(listWidget->introTextColor());
QFont introFont(listWidget->introTextFontFamily());
introFont.setPixelSize(pixelSize(listWidget->introTextFontSize()));
painter->setFont(introFont);
rect = option.rect.adjusted(imageSpace, TopSpace + titleFontMetrics.lineSpacing() + pixelSize(listWidget->titleTextExtraLeading()) , 0, 0);
style->drawItemText(painter, rect, Qt::AlignLeft, option.palette, true, intro);
QFontMetrics introFontMetrics(introFont);
// DATE
painter->setPen(listWidget->dateTextColor());
QFont font(listWidget->dateTextFontFamily());
font.setPixelSize(pixelSize(listWidget->dateTextFontSize()));
painter->setFont(font);
rect = option.rect.adjusted(imageSpace, TopSpace + titleFontMetrics.lineSpacing() + introFontMetrics.lineSpacing() + pixelSize(listWidget->introTextExtraLeading()), 0, 0);
style->drawItemText(painter, rect, Qt::AlignLeft, option.palette, true, date);
QFontMetrics dateTextFontMetrics(font);
// AUTHOR
QRect textRect = style->itemTextRect(dateTextFontMetrics, option.rect, Qt::AlignLeft, true, date);
rect = option.rect.adjusted(imageSpace + textRect.width() + 7, TopSpace + titleFontMetrics.lineSpacing() + introFontMetrics.lineSpacing() + pixelSize(listWidget->introTextExtraLeading()), 0, 0);
style->drawItemText(painter, rect, Qt::AlignLeft, option.palette, true, author);
if (!pixmap.isNull()) {
//ic.paint(painter, option.rect, Qt::AlignVCenter|Qt::AlignLeft);
style->drawItemPixmap(painter, option.rect.adjusted(0, TopSpace, 0, -TopSpace), Qt::AlignLeft, pixmap);
}
painter->restore();
}
示例12: paint
/** Redefined. */
void PlaylistItemDelegate::paint(QPainter *p, const QStyleOptionViewItem &opt, const QModelIndex &index) const
{
QStyleOptionViewItem o(opt);
initStyleOption(&o, index);
QStyle *style = QApplication::style();
QRect textRect = style->subElementRect(QStyle::SE_ItemViewItemText, &o, o.widget);
if (_playlist->horizontalHeader()->visualIndex(index.column()) == 0) {
textRect = textRect.adjusted(1, 0, 0, 0);
o.rect = textRect;
}
MiamStyledItemDelegate::paint(p, o, index);
// Highlight the current playing item
QFont font = SettingsPrivate::instance()->font(SettingsPrivate::FF_Playlist);
if (_playlist->mediaPlaylist()->currentIndex() == index.row() && _playlist->mediaPlayer()->state() != QMediaPlayer::StoppedState) {
font.setBold(true);
font.setItalic(true);
}
p->setFont(font);
p->save();
if (o.state.testFlag(QStyle::State_Selected)) {
if ((opt.palette.highlight().color().lighter(160).saturation() - opt.palette.highlightedText().color().saturation()) < 128) {
p->setPen(opt.palette.text().color());
} else {
p->setPen(opt.palette.highlightedText().color());
}
}
QString text;
switch (index.column()) {
case Playlist::COL_LENGTH:
if (index.data().toInt() >= 0) {
text = QDateTime::fromTime_t(index.data().toInt()).toString("m:ss");
text = p->fontMetrics().elidedText(text, o.textElideMode, textRect.width());
style->drawItemText(p, textRect, Qt::AlignCenter, o.palette, true, text);
}
break;
case Playlist::COL_TRACK_NUMBER:
case Playlist::COL_YEAR:
text = p->fontMetrics().elidedText(index.data().toString(), o.textElideMode, textRect.width());
style->drawItemText(p, textRect, Qt::AlignCenter, o.palette, true, text);
break;
case Playlist::COL_RATINGS:
if (index.data().canConvert<StarRating>() || opt.state.testFlag(QStyle::State_Selected)) {
StarRating r = index.data().value<StarRating>();
r.paintStars(p, opt);
}
break;
case Playlist::COL_ICON:{
//QRect iconRect = style->subElementRect(QStyle::SE_ItemViewItemDecoration, &o, o.widget);
text = p->fontMetrics().elidedText(index.data().toString(), o.textElideMode, textRect.width());
QSize iconSize(textRect.height() * 0.8, textRect.height() * 0.8);
/// FIXME
//style->drawItemText(p, textRect, Qt::AlignCenter, o.palette, true, text);
style->drawItemPixmap(p, o.rect, Qt::AlignCenter, o.icon.pixmap(iconSize));
break;
}
case Playlist::COL_TITLE:
case Playlist::COL_ALBUM:
case Playlist::COL_ARTIST:
default:
text = p->fontMetrics().elidedText(index.data().toString(), o.textElideMode, textRect.width());
if (QApplication::isLeftToRight()) {
textRect.adjust(2, 0, 0, 0);
} else {
textRect.adjust(0, 0, -2, 0);
}
style->drawItemText(p, textRect, Qt::AlignLeft | Qt::AlignVCenter, o.palette, true, text);
break;
}
p->restore();
}
示例13: PaintTrack
void PlaylistDelegate::PaintTrack (QPainter *painter,
const QStyleOptionViewItem& optionOld, const QModelIndex& index) const
{
QStyleOptionViewItemV4 option = optionOld;
const auto& info = index.data (Player::Role::Info).value<MediaInfo> ();
QStyle *style = option.widget ?
option.widget->style () :
QApplication::style ();
const bool isSubAlbum = index.parent ().isValid ();
QStyleOptionViewItemV4 bgOpt = option;
painter->save ();
if (index.data (Player::Role::IsCurrent).toBool ())
{
const QColor& highlight = bgOpt.palette.color (QPalette::Highlight);
QLinearGradient grad (0, 0, 0, bgOpt.rect.height ());
grad.setColorAt (0, highlight.lighter (100));
grad.setColorAt (1, highlight.darker (200));
bgOpt.backgroundBrush = QBrush (grad);
QFont font = option.font;
font.setItalic (true);
painter->setFont (font);
painter->setPen (bgOpt.palette.color (QPalette::HighlightedText));
}
style->drawPrimitive (QStyle::PE_PanelItemViewItem, &bgOpt, painter, option.widget);
QString lengthText = Util::MakeTimeFromLong (info.Length_);
if (lengthText.startsWith ("00:"))
lengthText = lengthText.mid (3);
if (index.data (Player::Role::IsStop).toBool ())
{
const auto& icon = Core::Instance ().GetProxy ()->GetIcon ("media-playback-stop");
const auto& px = icon.pixmap (option.rect.size ());
style->drawItemPixmap (painter, option.rect, Qt::AlignLeft | Qt::AlignVCenter, px);
option.rect.adjust (px.width () + Padding, 0, 0, 0);
}
const int width = option.fontMetrics.width (lengthText);
style->drawItemText (painter, option.rect,
Qt::AlignRight, option.palette, true, lengthText);
const auto& itemTextRect = option.rect.adjusted (0, 0, -width, 0);
QString itemStr;
if (!isSubAlbum)
itemStr = index.data ().toString ();
else
{
if (info.TrackNumber_ > 0 && !info.Title_.isEmpty ())
itemStr = QString::fromUtf8 ("%1 — %2").arg (info.TrackNumber_).arg (info.Title_);
else if (!info.Title_.isEmpty ())
itemStr = info.Title_;
else
itemStr = QFileInfo (info.LocalPath_).fileName ();
}
itemStr = option.fontMetrics.elidedText (itemStr, Qt::ElideRight, itemTextRect.width ());
style->drawItemText (painter, itemTextRect, 0, option.palette, true, itemStr);
painter->restore ();
}
示例14: paint
void PluginItemDelegate::paint( QPainter *painter,
const QStyleOptionViewItem& option,
const QModelIndex& index ) const
{
Q_ASSERT( index.isValid() );
QRect rect = option.rect;
QStyle *style = QApplication::style();
painter->save();
// Drawing the background
QStyleOption background = option;
style->drawPrimitive( QStyle::PE_PanelItemViewItem, &option, painter );
painter->translate( rect.topLeft() );
// rect is now represented in item coordinates
rect.moveTopLeft( QPoint( 0, 0 ) );
// The point at the top left of the available drawing area.
QPoint topLeft( 0, 0 );
// The point at the top right of the available drawing area.
QPoint topRight( rect.topRight() );
QRect nameRect = rect;
// Painting the checkbox
QStyleOptionButton checkBox = checkboxOption( option, index, topLeft.x(), Qt::AlignLeft );
painter->save();
style->drawControl( QStyle::CE_CheckBox, &checkBox, painter );
painter->restore();
nameRect.setLeft( checkBox.rect.right() + 1 );
// Painting the About Button
if ( index.data( RenderPlugin::AboutDialogAvailable ).toBool() ) {
QStyleOptionButton button = buttonOption( option, index, PluginItemDelegate::About,
topRight.x(), Qt::AlignRight );
style->drawControl( QStyle::CE_PushButton, &button, painter );
topRight -= QPoint( button.rect.width(), 0 );
}
// Painting the Configure Button
if ( index.data( RenderPlugin::ConfigurationDialogAvailable ).toBool() ) {
QStyleOptionButton button = buttonOption( option, index, PluginItemDelegate::Configure,
topRight.x(), Qt::AlignRight );
style->drawControl( QStyle::CE_PushButton, &button, painter );
topRight -= QPoint( button.rect.width(), 0 );
nameRect.setRight( button.rect.left() -1 );
}
// Painting the Name string
QString name = index.data( Qt::DisplayRole ).toString();
style->drawItemText( painter,
nameRect,
Qt::AlignLeft | Qt::AlignVCenter,
option.palette,
true,
name );
painter->restore();
}
示例15: paintEvent
//-----------------------------------------------------------------------------
void qtSqueezedLabel::paintEvent(QPaintEvent* e)
{
QTE_D(qtSqueezedLabel);
// Do nothing if drawing background for cache
if (d->cacheBackground)
{
return;
}
// If invalid, or text has changed, recalculate portion to elide
const QString& text = this->text();
if (!d->isValid(text))
{
d->cachedText = text;
d->recalculate(this->size(), this->fontMetrics());
}
// Check if text fits
if (!d->elided)
{
// If so, let ordinary label handle the painting
QLabel::paintEvent(e);
return;
}
e->accept();
// Prepare to paint text
QStyle* style = this->style();
QPainter painter(this);
const Qt::Alignment align =
QStyle::visualAlignment(this->layoutDirection(), this->alignment());
const QPalette::ColorRole role = this->foregroundRole();
QStyleOption opt;
opt.initFrom(this);
// Paint text
if (d->elideMode.testFlag(ElideFade))
{
const QRect rect = this->rect();
const int width = rect.width();
const QString elidedText = text.mid(d->offset, d->length);
// Draw text
style->drawItemText(&painter, rect, align, opt.palette,
this->isEnabled(), elidedText, role);
// Set up fade gradient
int x1, x2;
if (align.testFlag(Qt::AlignLeft))
{
x1 = qMax(0, width - d->fadeWidth);
x2 = width;
}
else
{
x1 = qMin(width, d->fadeWidth);
x2 = 0;
}
QLinearGradient grad(x1, 0, x2, 0);
grad.setColorAt(0.0, Qt::transparent);
grad.setColorAt(0.9, Qt::black);
// Fade out background for overpainting
QImage fadeImage(d->background);
QBrush brush(grad);
QPainter imagePainter(&fadeImage);
imagePainter.setCompositionMode(QPainter::CompositionMode_DestinationIn);
imagePainter.fillRect(0, 0, rect.width(), rect.height(), brush);
// Fade out text by overpainting with blended fade image
painter.drawImage(rect.topLeft(), fadeImage);
}
else
{
const QString elidedText =
text.mid(d->offset, d->length) + qtSqueezedLabelPrivate::ellipsis();
style->drawItemText(&painter, this->rect(), align, opt.palette,
this->isEnabled(), elidedText, role);
}
}