本文整理汇总了C++中QRect::bottom方法的典型用法代码示例。如果您正苦于以下问题:C++ QRect::bottom方法的具体用法?C++ QRect::bottom怎么用?C++ QRect::bottom使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QRect
的用法示例。
在下文中一共展示了QRect::bottom方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: flushImage
void flushImage(const QPoint &pos, const QImage &image, const QRect &destinationRect)
{
checkPauseApplication();
QMutexLocker locker(&m_surfaceMutex);
if (!m_surface)
return;
AttachedJNIEnv env;
if (!env.jniEnv)
return;
int bpp = 2;
AndroidBitmapInfo info;
int ret;
if ((ret = AndroidBitmap_getInfo(env.jniEnv, m_surface, &info)) < 0) {
qWarning() << "AndroidBitmap_getInfo() failed ! error=" << ret;
m_javaVM->DetachCurrentThread();
return;
}
if (info.format != ANDROID_BITMAP_FORMAT_RGB_565) {
qWarning() << "Bitmap format is not RGB_565!";
m_javaVM->DetachCurrentThread();
return;
}
void *pixels;
unsigned char *screenBits;
if ((ret = AndroidBitmap_lockPixels(env.jniEnv, m_surface, &pixels)) < 0) {
qWarning() << "AndroidBitmap_lockPixels() failed! error=" << ret;
m_javaVM->DetachCurrentThread();
return;
}
screenBits = static_cast<unsigned char *>(pixels);
int sbpl = info.stride;
int swidth = info.width;
int sheight = info.height;
unsigned sposx = pos.x() + destinationRect.x();
unsigned sposy = pos.y() + destinationRect.y();
screenBits += sposy * sbpl;
unsigned ibpl = image.bytesPerLine();
unsigned iposx = destinationRect.x();
unsigned iposy = destinationRect.y();
const unsigned char *imageBits = static_cast<const unsigned char *>(image.bits());
imageBits += iposy * ibpl;
unsigned width = swidth - sposx < unsigned(destinationRect.width())
? (swidth-sposx)
: destinationRect.width();
unsigned height = sheight - sposy < unsigned(destinationRect.height())
? (sheight - sposy)
: destinationRect.height();
for (unsigned y = 0; y < height; y++) {
memcpy(screenBits + y*sbpl + sposx*bpp,
imageBits + y*ibpl + iposx*bpp,
width*bpp);
}
AndroidBitmap_unlockPixels(env.jniEnv, m_surface);
env.jniEnv->CallStaticVoidMethod(m_applicationClass,
m_redrawSurfaceMethodID,
jint(destinationRect.left()),
jint(destinationRect.top()),
jint(destinationRect.right() + 1),
jint(destinationRect.bottom() + 1));
#warning FIXME dirty hack, figure out why it needs to add 1 to right and bottom !!!!
}
示例2: paint
QRect EventEditorDelegate::paint( QPainter* painter,
const QStyleOptionViewItem& option,
const QString& taskName,
const QString& timespan,
double logDuration,
EventState state ) const
{
painter->save();
const QPalette& palette = option.palette;
QFont mainFont = painter->font();
QFont detailFont ( mainFont );
detailFont.setPointSizeF( mainFont.pointSizeF() * 0.8 );
QPixmap decoration;
QColor foreground;
QColor background;
switch( state ) {
case EventState_Locked:
decoration = Data::editorLockedPixmap();
foreground = palette.color( QPalette::Disabled, QPalette::WindowText );
background = palette.color( QPalette::Disabled, QPalette::Window );
break;
case EventState_Dirty:
decoration = Data::editorDirtyPixmap();
foreground = palette.color( QPalette::Active, QPalette::WindowText );
background = palette.color( QPalette::Active, QPalette::Window );
break;
case EventState_Default:
default:
foreground = palette.color( QPalette::Active, QPalette::WindowText );
background = palette.color( QPalette::Active, QPalette::Window );
break;
};
if ( option.state & QStyle::State_Selected ) {
QBrush brush( palette.color( QPalette::Active, QPalette::Highlight ) );
painter->setBrush( brush );
painter->setPen( Qt::NoPen );
painter->drawRect( option.rect );
if ( state != EventState_Locked ) {
foreground = palette.color(
QPalette::Active, QPalette::HighlightedText );
}
}
painter->setPen( foreground );
// draw line 1 and decoration:
painter->setFont( mainFont );
QRect taskRect;
taskRect.setTopLeft( option.rect.topLeft() );
taskRect.setWidth( option.rect.width() - decoration.width() );
taskRect.setHeight( option.rect.height() );
QPoint decorationPoint ( option.rect.width() - decoration.width(),
option.rect.top() + ( option.rect.height() - decoration.height() ) / 2 );
QRect boundingRect;
QString elidedTask = Charm::elidedTaskName( taskName, mainFont, taskRect.width() );
painter->drawText( taskRect, Qt::AlignLeft | Qt::AlignTop, elidedTask,
&boundingRect );
taskRect.setSize( boundingRect.size() );
taskRect.setHeight( qMax( taskRect.height(), decoration.height() ) );
// now taskRect tells us where to start line 2
painter->drawPixmap( decorationPoint, decoration );
// draw line 2 (timespan and comment, partly):
painter->setFont( detailFont );
QRect detailsRect;
detailsRect.setTopLeft( QPoint( taskRect.topLeft().x(),
taskRect.topLeft().y() + taskRect.height() ) );
detailsRect.setWidth( option.rect.width() );
detailsRect.setHeight( option.rect.height() - taskRect.height() );
painter->drawText( detailsRect, Qt::AlignLeft | Qt::AlignTop,
timespan, &boundingRect );
detailsRect.setSize( boundingRect.size() );
// draw the duration line:
const int Margin = 2;
QRect durationRect( option.rect.left() + 1, detailsRect.bottom(),
static_cast<int>( logDuration * ( option.rect.width() - 2 ) ), Margin );
painter->setBrush( palette.dark() );
painter->setPen( Qt::NoPen );
painter->drawRect( durationRect );
painter->restore();
// return bounding rectangle
return QRect( 0, 0,
qMax( taskRect.width(), detailsRect.width() ),
durationRect.bottom() + 1 - option.rect.top() );
}
示例3: region
//! [region start]
QRegion MyDecoration::region(const QWidget *widget, const QRect &insideRect,
int decorationRegion)
{
//! [region start]
//! [calculate the positions of buttons based on the window flags used]
QHash<DecorationRegion, int> buttons;
Qt::WindowFlags flags = widget->windowFlags();
int dx = -buttonMargin - buttonWidth;
foreach (Qt::WindowType button, buttonHints) {
if (flags & button) {
int x = (buttons.size() + 1) * dx;
buttons[buttonHintMap[button]] = x;
}
}
//! [calculate the positions of buttons based on the window flags used]
//! [calculate the extent of the title]
int titleRightMargin = buttons.size() * dx;
QRect outsideRect(insideRect.left() - border,
insideRect.top() - titleHeight - border,
insideRect.width() + 2 * border,
insideRect.height() + titleHeight + 2 * border);
//! [calculate the extent of the title]
//! [check for all regions]
QRegion region;
if (decorationRegion == All) {
region += QRegion(outsideRect) - QRegion(insideRect);
return region;
}
//! [check for all regions]
//! [compose a region based on the decorations specified]
if (decorationRegion & Title) {
QRect rect = outsideRect.adjusted(border, border, -border, 0);
rect.setHeight(titleHeight);
// Adjust the width to accommodate buttons.
rect.setWidth(qMax(0, rect.width() + titleRightMargin));
region += rect;
}
if (decorationRegion & Top) {
QRect rect = outsideRect.adjusted(border, 0, -border, 0);
rect.setHeight(border);
region += rect;
}
if (decorationRegion & Left) {
QRect rect = outsideRect.adjusted(0, border, 0, -border);
rect.setWidth(border);
region += rect;
}
if (decorationRegion & Right) {
QRect rect = outsideRect.adjusted(0, border, 0, -border);
rect.setLeft(rect.right() + 1 - border);
region += rect;
}
if (decorationRegion & Bottom) {
QRect rect = outsideRect.adjusted(border, 0, -border, 0);
rect.setTop(rect.bottom() + 1 - border);
region += rect;
}
if (decorationRegion & TopLeft) {
QRect rect = outsideRect;
rect.setWidth(border);
rect.setHeight(border);
region += rect;
}
if (decorationRegion & TopRight) {
QRect rect = outsideRect;
rect.setLeft(rect.right() + 1 - border);
rect.setHeight(border);
region += rect;
}
if (decorationRegion & BottomLeft) {
QRect rect = outsideRect;
rect.setWidth(border);
rect.setTop(rect.bottom() + 1 - border);
region += rect;
}
if (decorationRegion & BottomRight) {
QRect rect = outsideRect;
rect.setLeft(rect.right() + 1 - border);
rect.setTop(rect.bottom() + 1 - border);
region += rect;
}
//! [compose a region based on the decorations specified]
//! [add a region for each button only if it is present]
foreach (QDecoration::DecorationRegion testRegion, stateRegions) {
if (decorationRegion & testRegion and buttons.contains(testRegion)) {
// Inside the title rectangle
QRect rect = outsideRect.adjusted(border, border, -border, 0);
rect.setHeight(titleHeight);
dx = buttons[testRegion];
rect.setLeft(rect.right() + 1 + dx);
//.........这里部分代码省略.........
示例4: paint
void KdeConnectDevicesDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const {
painter->setFont(option.font);
QRect iconRect;
if (((QListView*) option.widget)->viewMode() == QListView::IconMode) {
iconRect.setLeft(option.rect.left() + 38 * getDPIScaling());
iconRect.setTop(option.rect.top() + 6 * getDPIScaling());
iconRect.setHeight(32 * getDPIScaling());
iconRect.setWidth(32 * getDPIScaling());
QRect textRect;
textRect.setLeft(option.rect.left() + 6 * getDPIScaling());
textRect.setTop(iconRect.bottom() + 6 * getDPIScaling());
textRect.setBottom(option.rect.bottom());
textRect.setRight(option.rect.right());
if (option.state & QStyle::State_Selected) {
painter->setPen(Qt::transparent);
painter->setBrush(option.palette.color(QPalette::Highlight));
painter->drawRect(option.rect);
painter->setBrush(Qt::transparent);
painter->setPen(option.palette.color(QPalette::HighlightedText));
painter->drawText(textRect, index.data().toString());
} else if (option.state & QStyle::State_MouseOver) {
QColor col = option.palette.color(QPalette::Highlight);
col.setAlpha(127);
painter->setBrush(col);
painter->setPen(Qt::transparent);
painter->drawRect(option.rect);
painter->setBrush(Qt::transparent);
painter->setPen(option.palette.color(QPalette::WindowText));
painter->drawText(textRect, index.data().toString());
} else {
painter->setPen(option.palette.color(QPalette::WindowText));
painter->drawText(textRect, index.data().toString());
}
} else {
iconRect.setLeft(option.rect.left() + 12 * getDPIScaling());
iconRect.setTop(option.rect.top() + 6 * getDPIScaling());
iconRect.setBottom(iconRect.top() + 32 * getDPIScaling());
iconRect.setRight(iconRect.left() + 32 * getDPIScaling());
QRect textRect;
textRect.setLeft(iconRect.right() + 6 * getDPIScaling());
textRect.setTop(option.rect.top() + 6 * getDPIScaling());
textRect.setBottom(option.rect.top() + option.fontMetrics.height() + 6 * getDPIScaling());
textRect.setRight(option.rect.right());
QRect descRect;
descRect.setLeft(iconRect.right() + 6 * getDPIScaling());
descRect.setTop(option.rect.top() + option.fontMetrics.height() + 8 * getDPIScaling());
descRect.setBottom(option.rect.top() + option.fontMetrics.height() * 2 + 6 * getDPIScaling());
descRect.setRight(option.rect.right());
if (option.state & QStyle::State_Selected) {
painter->setPen(Qt::transparent);
painter->setBrush(option.palette.color(QPalette::Highlight));
painter->drawRect(option.rect);
painter->setBrush(Qt::transparent);
painter->setPen(option.palette.color(QPalette::HighlightedText));
painter->drawText(textRect, index.data().toString());
painter->drawText(descRect, index.data(Qt::UserRole).toString());
} else if (option.state & QStyle::State_MouseOver) {
QColor col = option.palette.color(QPalette::Highlight);
col.setAlpha(127);
painter->setBrush(col);
painter->setPen(Qt::transparent);
painter->drawRect(option.rect);
painter->setBrush(Qt::transparent);
painter->setPen(option.palette.color(QPalette::WindowText));
painter->drawText(textRect, index.data().toString());
painter->setPen(option.palette.color(QPalette::Disabled, QPalette::WindowText));
painter->drawText(descRect, index.data(Qt::UserRole).toString());
} else {
painter->setPen(option.palette.color(QPalette::WindowText));
painter->drawText(textRect, index.data().toString());
painter->setPen(option.palette.color(QPalette::Disabled, QPalette::WindowText));
painter->drawText(descRect, index.data(Qt::UserRole).toString());
}
}
painter->drawPixmap(iconRect, index.data(Qt::DecorationRole).value<QIcon>().pixmap(iconRect.size()));
QDBusInterface device("org.kde.kdeconnect", "/modules/kdeconnect/devices/" + index.data(Qt::UserRole + 1).toString(), "org.kde.kdeconnect.device");
bool reachable = device.property("isReachable").toBool();
bool trusted = device.property("isTrusted").toBool();
if (reachable && trusted) {
painter->setBrush(QColor(0, 100, 0));
painter->setPen(Qt::transparent);
painter->drawRect(option.rect.left(), option.rect.top(), 6 * getDPIScaling(), option.rect.height());
}
}
示例5: accept
void SubtotalDialog::accept()
{
Sheet *const sheet = d->selection->lastSheet();
QRect range = d->selection->lastRange();
int numOfCols = range.width();
QVector<int> columns(numOfCols);
bool empty = true;
int left = range.left();
for (int i = 0; i < d->mainWidget.m_columnList->count(); ++i) {
QListWidgetItem* item = d->mainWidget.m_columnList->item(i);
if (item->checkState() == Qt::Checked) {
columns[i] = left + i;
empty = false;
} else
columns[i] = -1;
}
if (empty) {
KMessageBox::sorry(this, i18n("You need to select at least one column for adding subtotals."));
return;
}
if (d->detailsWidget.m_replaceSubtotals->isChecked())
removeSubtotalLines();
range = d->selection->lastRange();
int mainCol = left + d->mainWidget.m_columnBox->currentIndex();
int bottom = range.bottom();
int top = range.top();
int newBottom = bottom;
left = range.left();
QString oldText = Cell(sheet, mainCol, top).displayText();
QString newText;
QString result(' ' + i18n("Result"));
int lastChangedRow = top;
bool ignoreEmptyCells = d->detailsWidget.m_IgnoreBox->isChecked();
bool addRow;
if (!d->detailsWidget.m_summaryOnly->isChecked()) {
int y = top + 1;
kDebug() << "Starting in row" << y;
while (y <= bottom) {
addRow = true;
newText = Cell(sheet, mainCol, y).displayText();
if (ignoreEmptyCells && (newText.length() == 0)) {
++y;
kDebug() << "Still the same ->" << y;
continue;
}
if (newText != oldText) {
int saveY = y;
for (int x = 0; x < numOfCols; ++x) {
kDebug() << "Column:" << x << "," << columns[x];
if (columns[x] != -1) {
if (!addSubtotal(mainCol, columns[x], y - 1, lastChangedRow, addRow, oldText + result))
reject();
if (addRow) {
++saveY;
++bottom;
}
addRow = false;
}
}
y = saveY;
lastChangedRow = y;
}
oldText = newText;
++y;
}
addRow = true;
for (int x = 0; x < numOfCols; ++x) {
if (columns[x] != -1) {
if (!addSubtotal(mainCol, columns[x], y - 1, lastChangedRow, addRow, oldText + result))
reject();
addRow = false;
}
}
newBottom = y;
}
if (d->detailsWidget.m_summaryBelow->isChecked()) {
addRow = true;
int bottom = newBottom;
for (int x = 0; x < numOfCols; ++x) {
if (columns[x] != -1) {
addSubtotal(mainCol, columns[x], bottom, top, addRow, i18n("Grand Total"));
addRow = false;
}
}
}
KDialog::accept();
//.........这里部分代码省略.........
示例6: p
void K3b::FillStatusDisplayWidget::paintEvent( QPaintEvent* )
{
QPainter p( this );
const QPalette::ColorGroup colorGroup = isEnabled() ? QPalette::Normal : QPalette::Disabled;
const Msf docSize = d->doc->length();
const Msf cdSize = d->cdSize;
const Msf maxValue = (cdSize > docSize ? cdSize : docSize) + ( 10*60*75 );
const Msf tolerance = 60*75;
QBrush fillBrush;
if( docSize <= cdSize - tolerance ) {
fillBrush = KColorScheme( colorGroup, KColorScheme::Selection ).background( KColorScheme::PositiveBackground );
}
else if( docSize > cdSize + tolerance ) {
fillBrush = KColorScheme( colorGroup, KColorScheme::Selection ).background( KColorScheme::NegativeBackground );
}
else {
fillBrush = KColorScheme( colorGroup, KColorScheme::Selection ).background( KColorScheme::NeutralBackground );
}
const QPen normalPen = KColorScheme( colorGroup, KColorScheme::Window ).foreground( KColorScheme::NormalText ).color();
const QPen fillPen = KColorScheme( colorGroup, KColorScheme::Selection ).foreground( KColorScheme::NormalText ).color();
QStyleOptionProgressBarV2 sopb;
sopb.direction = layoutDirection();
sopb.fontMetrics = fontMetrics();
sopb.palette = palette();
sopb.palette.setBrush( QPalette::Highlight, fillBrush );
sopb.rect = rect();
sopb.state = isEnabled() ? QStyle::State_Enabled : QStyle::State_None;
sopb.minimum = 0;
sopb.maximum = maxValue.totalFrames();
sopb.progress = docSize.totalFrames();
style()->drawControl( QStyle::CE_ProgressBar, &sopb, &p );
const QRect barRect = style()->subElementRect( QStyle::SE_ProgressBarContents, &sopb );
// so split width() in maxValue pieces
double one = (double)barRect.width() / (double)maxValue.totalFrames();
QRect crect( barRect );
crect.setWidth( (int)(one*(double)docSize.totalFrames()) );
// ====================================================================================
// Now the colored bar is painted
// Continue with the texts
// ====================================================================================
// first we determine the text to display
// ====================================================================================
QString docSizeText;
if( d->showTime )
docSizeText = i18n("%1 min", d->doc->length().toString(false));
else
docSizeText = KIO::convertSize( d->doc->size() );
QString overSizeText;
if( d->cdSize.mode1Bytes() >= d->doc->size() )
overSizeText = i18n("Available: %1 of %2",
d->showTime
? i18n("%1 min", (cdSize - d->doc->length()).toString(false) )
: KIO::convertSize( (cdSize - d->doc->length()).mode1Bytes() ),
d->showTime
? i18n("%1 min", cdSize.toString(false))
: KIO::convertSize( cdSize.mode1Bytes() ) );
else
overSizeText = i18n("Capacity exceeded by %1",
d->showTime
? i18n("%1 min", (d->doc->length() - cdSize ).toString(false))
: KIO::convertSize( (long long)d->doc->size() - cdSize.mode1Bytes() ) );
// ====================================================================================
// calculate the medium size marker
// ====================================================================================
int mediumSizeMarkerPos = barRect.left() + (int)(one*cdSize.lba());
QPoint mediumSizeMarkerFrom( mediumSizeMarkerPos, barRect.bottom() );
QPoint mediumSizeMarkerTo( mediumSizeMarkerPos, barRect.top() + barRect.height()/2 );
// ====================================================================================
// we want to draw the docSizeText centered in the filled area
// if there is not enough space we just align it left
// ====================================================================================
int docSizeTextPos = 0;
int docSizeTextLength = fontMetrics().width(docSizeText);
if( docSizeTextLength + 5 > crect.width() ) {
docSizeTextPos = crect.left() + 5; // a little margin
}
else {
docSizeTextPos = ( crect.width() - docSizeTextLength ) / 2;
// make sure the text does not cross the medium size marker
if( docSizeTextPos <= mediumSizeMarkerPos && mediumSizeMarkerPos <= docSizeTextPos + docSizeTextLength )
docSizeTextPos = qMax( crect.left() + 5, mediumSizeMarkerPos - docSizeTextLength - 5 );
}
// ====================================================================================
// calculate the over size text
// ====================================================================================
//.........这里部分代码省略.........
示例7: modelMatrix
void KisOpenGLCanvas2::drawImage()
{
if (!d->displayShader) {
return;
}
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
KisCoordinatesConverter *converter = coordinatesConverter();
d->displayShader->bind();
QMatrix4x4 projectionMatrix;
projectionMatrix.setToIdentity();
projectionMatrix.ortho(0, width(), height(), 0, NEAR_VAL, FAR_VAL);
// Set view/projection matrices
QMatrix4x4 modelMatrix(coordinatesConverter()->imageToWidgetTransform());
modelMatrix.optimize();
modelMatrix = projectionMatrix * modelMatrix;
d->displayShader->setUniformValue(d->displayShader->location(Uniform::ModelViewProjection), modelMatrix);
QMatrix4x4 textureMatrix;
textureMatrix.setToIdentity();
d->displayShader->setUniformValue(d->displayShader->location(Uniform::TextureMatrix), textureMatrix);
QRectF widgetRect(0,0, width(), height());
QRectF widgetRectInImagePixels = converter->documentToImage(converter->widgetToDocument(widgetRect));
qreal scaleX, scaleY;
converter->imageScale(&scaleX, &scaleY);
d->displayShader->setUniformValue(d->displayShader->location(Uniform::ViewportScale), (GLfloat) scaleX);
d->displayShader->setUniformValue(d->displayShader->location(Uniform::TexelSize), (GLfloat) d->openGLImageTextures->texelSize());
QRect ir = d->openGLImageTextures->storedImageBounds();
QRect wr = widgetRectInImagePixels.toAlignedRect();
if (!d->wrapAroundMode) {
// if we don't want to paint wrapping images, just limit the
// processing area, and the code will handle all the rest
wr &= ir;
}
int firstColumn = d->xToColWithWrapCompensation(wr.left(), ir);
int lastColumn = d->xToColWithWrapCompensation(wr.right(), ir);
int firstRow = d->yToRowWithWrapCompensation(wr.top(), ir);
int lastRow = d->yToRowWithWrapCompensation(wr.bottom(), ir);
int minColumn = d->openGLImageTextures->xToCol(ir.left());
int maxColumn = d->openGLImageTextures->xToCol(ir.right());
int minRow = d->openGLImageTextures->yToRow(ir.top());
int maxRow = d->openGLImageTextures->yToRow(ir.bottom());
int imageColumns = maxColumn - minColumn + 1;
int imageRows = maxRow - minRow + 1;
for (int col = firstColumn; col <= lastColumn; col++) {
for (int row = firstRow; row <= lastRow; row++) {
int effectiveCol = col;
int effectiveRow = row;
QPointF tileWrappingTranslation;
if (effectiveCol > maxColumn || effectiveCol < minColumn) {
int translationStep = floor(qreal(col) / imageColumns);
int originCol = translationStep * imageColumns;
effectiveCol = col - originCol;
tileWrappingTranslation.rx() = translationStep * ir.width();
}
if (effectiveRow > maxRow || effectiveRow < minRow) {
int translationStep = floor(qreal(row) / imageRows);
int originRow = translationStep * imageRows;
effectiveRow = row - originRow;
tileWrappingTranslation.ry() = translationStep * ir.height();
}
KisTextureTile *tile =
d->openGLImageTextures->getTextureTileCR(effectiveCol, effectiveRow);
if (!tile) {
warnUI << "OpenGL: Trying to paint texture tile but it has not been created yet.";
continue;
}
/*
* We create a float rect here to workaround Qt's
* "history reasons" in calculation of right()
* and bottom() coordinates of integer rects.
*/
QRectF textureRect(tile->tileRectInTexturePixels());
QRectF modelRect(tile->tileRectInImagePixels().translated(tileWrappingTranslation.x(), tileWrappingTranslation.y()));
//Setup the geometry for rendering
if (KisOpenGL::hasOpenGL3()) {
rectToVertices(d->vertices, modelRect);
d->quadBuffers[0].bind();
d->quadBuffers[0].write(0, d->vertices, 3 * 6 * sizeof(float));
//.........这里部分代码省略.........
示例8: drawContents
void KProgress::drawContents(QPainter *p)
{
QRect cr = contentsRect(), er = cr;
fr = cr;
QBrush fb(bar_color), eb(backgroundColor());
if (bar_pixmap)
fb.setPixmap(*bar_pixmap);
if (backgroundPixmap())
eb.setPixmap(*backgroundPixmap());
switch (bar_style) {
case Solid:
if (orient == Horizontal) {
fr.setWidth(recalcValue(cr.width()));
er.setLeft(fr.right() + 1);
} else {
fr.setTop(cr.bottom() - recalcValue(cr.height()));
er.setBottom(fr.top() - 1);
}
p->setBrushOrigin(cr.topLeft());
p->fillRect(fr, fb);
p->fillRect(er, eb);
break;
case Blocked:
const int margin = 2;
int max, num, dx, dy;
if (orient == Horizontal) {
fr.setHeight(cr.height() - 2 * margin);
fr.setWidth((int)(0.67 * fr.height()));
fr.moveTopLeft(QPoint(cr.left() + margin, cr.top() + margin));
dx = fr.width() + margin;
dy = 0;
max = (cr.width() - margin) / (fr.width() + margin) + 1;
num = recalcValue(max);
} else {
fr.setWidth(cr.width() - 2 * margin);
fr.setHeight((int)(0.67 * fr.width()));
fr.moveBottomLeft(QPoint(cr.left() + margin, cr.bottom() - margin));
dx = 0;
dy = - (fr.height() + margin);
max = (cr.height() - margin) / (fr.height() + margin) + 1;
num = recalcValue(max);
}
p->setClipRect(cr.x() + margin, cr.y() + margin,
cr.width() - margin, cr.height() - margin);
for (int i = 0; i < num; i++) {
p->setBrushOrigin(fr.topLeft());
p->fillRect(fr, fb);
fr.moveBy(dx, dy);
}
if (num != max) {
if (orient == Horizontal)
er.setLeft(fr.right() + 1);
else
er.setBottom(fr.bottom() + 1);
if (!er.isNull()) {
p->setBrushOrigin(cr.topLeft());
p->fillRect(er, eb);
}
}
break;
}
if (text_enabled && bar_style != Blocked)
drawText(p);
}
示例9: imagePositionChanged
void KisInfinityManager::imagePositionChanged()
{
QRect imageRect = view()->canvasBase()->coordinatesConverter()->imageRectInWidgetPixels().toAlignedRect();
QRect widgetRect = view()->canvasBase()->canvasWidget()->rect();
KisConfig cfg;
qreal vastScrolling = cfg.vastScrolling();
int xReserve = vastScrolling * widgetRect.width();
int yReserve = vastScrolling * widgetRect.height();
int xThreshold = imageRect.width() - 0.4 * xReserve;
int yThreshold = imageRect.height() - 0.4 * yReserve;
const int stripeWidth = 48;
int xCut = widgetRect.width() - stripeWidth;
int yCut = widgetRect.height() - stripeWidth;
m_decorationPath = QPainterPath();
m_decorationPath.setFillRule(Qt::WindingFill);
m_handleTransform.clear();
m_sideRects.clear();
m_sideRects.resize(NSides);
bool visible = false;
if (imageRect.x() <= -xThreshold) {
QRect areaRect(widgetRect.adjusted(xCut, 0, 0, 0));
QPointF pt = areaRect.center() + QPointF(-0.1 * stripeWidth, 0);
addDecoration(areaRect, pt, 0, Right);
visible = true;
}
if (imageRect.y() <= -yThreshold) {
QRect areaRect(widgetRect.adjusted(0, yCut, 0, 0));
QPointF pt = areaRect.center() + QPointF(0, -0.1 * stripeWidth);
addDecoration(areaRect, pt, 90, Bottom);
visible = true;
}
if (imageRect.right() > widgetRect.width() + xThreshold) {
QRect areaRect(widgetRect.adjusted(0, 0, -xCut, 0));
QPointF pt = areaRect.center() + QPointF(0.1 * stripeWidth, 0);
addDecoration(areaRect, pt, 180, Left);
visible = true;
}
if (imageRect.bottom() > widgetRect.height() + yThreshold) {
QRect areaRect(widgetRect.adjusted(0, 0, 0, -yCut));
QPointF pt = areaRect.center() + QPointF(0, 0.1 * stripeWidth);
addDecoration(areaRect, pt, 270, Top);
visible = true;
}
if (visible && !m_filteringEnabled) {
view()->canvasBase()->inputManager()->attachPriorityEventFilter(this);
m_filteringEnabled = true;
}
if (!visible && m_filteringEnabled) {
view()->canvasBase()->inputManager()->detachPriorityEventFilter(this);
m_filteringEnabled = false;
}
}
示例10: drawScrollBarControls
/*!\reimp
*/
void QWindowsStyle::drawScrollBarControls( QPainter* p, const QScrollBar* sb, int sliderStart, uint controls, uint activeControl )
{
#ifndef QT_NO_SCROLLBAR
#define ADD_LINE_ACTIVE ( activeControl == AddLine )
#define SUB_LINE_ACTIVE ( activeControl == SubLine )
QColorGroup g = sb->colorGroup();
int sliderMin, sliderMax, sliderLength, buttonDim;
scrollBarMetrics( sb, sliderMin, sliderMax, sliderLength, buttonDim );
if (sliderStart > sliderMax) { // sanity check
sliderStart = sliderMax;
}
int b = 0;
int dimB = buttonDim;
QRect addB;
QRect subB;
QRect addPageR;
QRect subPageR;
QRect sliderR;
int addX, addY, subX, subY;
int length = HORIZONTAL ? sb->width() : sb->height();
int extent = HORIZONTAL ? sb->height() : sb->width();
if ( HORIZONTAL ) {
subY = addY = ( extent - dimB ) / 2;
subX = b;
addX = length - dimB - b;
} else {
subX = addX = ( extent - dimB ) / 2;
subY = b;
addY = length - dimB - b;
}
subB.setRect( subX,subY,dimB,dimB );
addB.setRect( addX,addY,dimB,dimB );
int sliderEnd = sliderStart + sliderLength;
int sliderW = extent - b*2;
if ( HORIZONTAL ) {
subPageR.setRect( subB.right() + 1, b,
sliderStart - subB.right() - 1 , sliderW );
addPageR.setRect( sliderEnd, b, addX - sliderEnd, sliderW );
sliderR .setRect( sliderStart, b, sliderLength, sliderW );
} else {
subPageR.setRect( b, subB.bottom() + 1, sliderW,
sliderStart - subB.bottom() - 1 );
addPageR.setRect( b, sliderEnd, sliderW, addY - sliderEnd );
sliderR .setRect( b, sliderStart, sliderW, sliderLength );
}
bool maxedOut = (sb->maxValue() == sb->minValue());
if ( controls & AddLine ) {
qDrawWinPanel( p, addB.x(), addB.y(),
addB.width(), addB.height(), g,
ADD_LINE_ACTIVE, &g.brush( QColorGroup::Button ) );
drawArrow( p, VERTICAL ? DownArrow : RightArrow,
ADD_LINE_ACTIVE, addB.x()+2, addB.y()+2,
addB.width()-4, addB.height()-4, g, !maxedOut );
}
if ( controls & SubLine ) {
qDrawWinPanel( p, subB.x(), subB.y(),
subB.width(), subB.height(), g,
SUB_LINE_ACTIVE, &g.brush( QColorGroup::Button ) );
drawArrow( p, VERTICAL ? UpArrow : LeftArrow,
SUB_LINE_ACTIVE, subB.x()+2, subB.y()+2,
subB.width()-4, subB.height()-4, g, !maxedOut );
}
QBrush br =
g.brush( QColorGroup::Light ).pixmap() ?
g.brush( QColorGroup::Light ) :
QBrush(g.light(), Dense4Pattern);
p->setBrush( br );
p->setPen( NoPen );
p->setBackgroundMode( OpaqueMode );
if ( maxedOut ) {
p->drawRect( sliderR );
} else {
if ( (controls & SubPage && SubPage == activeControl) ||
(controls & AddPage && AddPage == activeControl) ) {
QBrush b = p->brush();
QColor c = p->backgroundColor();
// p->fillRect( AddPage == activeControl? addPageR : subPageR, g.fillDark() );
p->setBackgroundColor( g.dark() );
p->setBrush( QBrush(g.shadow(), Dense4Pattern) );
p->drawRect( AddPage == activeControl? addPageR : subPageR );
p->setBackgroundColor( c );
p->setBrush( b );
}
if ( controls & SubPage && SubPage != activeControl)
p->drawRect( subPageR );
if ( controls & AddPage && AddPage != activeControl)
p->drawRect( addPageR );
if ( controls & Slider ) {
if ( !maxedOut ) {
QPoint bo = p->brushOrigin();
if ( !sb->testWState(WState_GlobalBrushOrigin) )
//.........这里部分代码省略.........
示例11: resizeWidget
void NcWidgetData::resizeWidget( const QPoint& globalMousePos )
{
QRect origRect;
if ( d->mUseRubberBandOnResize )
origRect = mRubberBand->frameGeometry();
else
origRect = mWidget->frameGeometry();
int left = origRect.left();
int top = origRect.top();
int right = origRect.right();
int bottom = origRect.bottom();
origRect.getCoords( &left, &top, &right, &bottom );
int minWidth = mWidget->minimumWidth();
int minHeight = mWidget->minimumHeight();
if ( mPressedMousePos.onTopLeftEdge )
{
left = globalMousePos.x();
top = globalMousePos.y();
}
else if ( mPressedMousePos.onBottomLeftEdge )
{
left = globalMousePos.x();
bottom = globalMousePos.y();
}
else if ( mPressedMousePos.onTopRightEdge )
{
right = globalMousePos.x();
top = globalMousePos.y();
}
else if ( mPressedMousePos.onBottomRightEdge )
{
right = globalMousePos.x();
bottom = globalMousePos.y();
}
else if ( mPressedMousePos.onLeftEdge )
{
left = globalMousePos.x();
}
else if ( mPressedMousePos.onRightEdge )
{
right = globalMousePos.x();
}
else if ( mPressedMousePos.onTopEdge )
{
top = globalMousePos.y();
}
else if ( mPressedMousePos.onBottomEdge )
{
bottom = globalMousePos.y();
}
QRect newRect( QPoint(left, top), QPoint(right, bottom) );
if ( newRect.isValid() )
{
if ( minWidth > newRect.width() )
{
//determine what has caused the width change.
if( left != origRect.left() )
newRect.setLeft( origRect.left() );
else
newRect.setRight( origRect.right() );
}
if ( minHeight > newRect.height() )
{
//determine what has caused the height change.
if ( top != origRect.top() )
newRect.setTop( origRect.top() );
else
newRect.setBottom( origRect.bottom() );
}
if ( d->mUseRubberBandOnResize )
{
mRubberBand->setGeometry( newRect );
}
else
{
mWidget->setGeometry( newRect );
}
}
else
{
//qDebug() << "Calculated Rect is not valid" << newRect;
}
}
示例12: drawTileLayer
void IsometricRenderer::drawTileLayer(QPainter *painter,
const TileLayer *layer,
const QRectF &exposed) const
{
const int tileWidth = map()->tileWidth();
const int tileHeight = map()->tileHeight();
if (tileWidth <= 0 || tileHeight <= 1)
return;
QRect rect = exposed.toAlignedRect();
if (rect.isNull())
rect = boundingRect(layer->bounds());
QMargins drawMargins = layer->drawMargins();
drawMargins.setTop(drawMargins.top() - tileHeight);
drawMargins.setRight(drawMargins.right() - tileWidth);
rect.adjust(-drawMargins.right(),
-drawMargins.bottom(),
drawMargins.left(),
drawMargins.top());
// Determine the tile and pixel coordinates to start at
QPointF tilePos = pixelToTileCoords(rect.x(), rect.y());
QPoint rowItr = QPoint((int) std::floor(tilePos.x()),
(int) std::floor(tilePos.y()));
QPointF startPos = tileToPixelCoords(rowItr);
startPos.rx() -= tileWidth / 2;
startPos.ry() += tileHeight;
// Compensate for the layer position
rowItr -= QPoint(layer->x(), layer->y());
/* Determine in which half of the tile the top-left corner of the area we
* need to draw is. If we're in the upper half, we need to start one row
* up due to those tiles being visible as well. How we go up one row
* depends on whether we're in the left or right half of the tile.
*/
const bool inUpperHalf = startPos.y() - rect.y() > tileHeight / 2;
const bool inLeftHalf = rect.x() - startPos.x() < tileWidth / 2;
if (inUpperHalf) {
if (inLeftHalf) {
--rowItr.rx();
startPos.rx() -= tileWidth / 2;
} else {
--rowItr.ry();
startPos.rx() += tileWidth / 2;
}
startPos.ry() -= tileHeight / 2;
}
// Determine whether the current row is shifted half a tile to the right
bool shifted = inUpperHalf ^ inLeftHalf;
QTransform baseTransform = painter->transform();
for (int y = startPos.y(); y - tileHeight < rect.bottom();
y += tileHeight / 2)
{
QPoint columnItr = rowItr;
for (int x = startPos.x(); x < rect.right(); x += tileWidth) {
if (layer->contains(columnItr)) {
const Cell &cell = layer->cellAt(columnItr);
if (!cell.isEmpty()) {
const QPixmap &img = cell.tile->image();
const QPoint offset = cell.tile->tileset()->tileOffset();
qreal m11 = 1; // Horizontal scaling factor
qreal m12 = 0; // Vertical shearing factor
qreal m21 = 0; // Horizontal shearing factor
qreal m22 = 1; // Vertical scaling factor
qreal dx = offset.x() + x;
qreal dy = offset.y() + y - img.height();
if (cell.flippedAntiDiagonally) {
// Use shearing to swap the X/Y axis
m11 = 0;
m12 = 1;
m21 = 1;
m22 = 0;
// Compensate for the swap of image dimensions
dy += img.height() - img.width();
}
if (cell.flippedHorizontally) {
m11 = -m11;
m21 = -m21;
dx += cell.flippedAntiDiagonally ? img.height()
: img.width();
}
if (cell.flippedVertically) {
m12 = -m12;
m22 = -m22;
dy += cell.flippedAntiDiagonally ? img.width()
: img.height();
}
//.........这里部分代码省略.........
示例13: read_jpeg_image
static bool read_jpeg_image(QImage *outImage,
QSize scaledSize, QRect scaledClipRect,
QRect clipRect, int inQuality, j_decompress_ptr info, struct my_error_mgr* err )
{
if (!setjmp(err->setjmp_buffer)) {
// -1 means default quality.
int quality = inQuality;
if (quality < 0)
quality = 75;
// If possible, merge the scaledClipRect into either scaledSize
// or clipRect to avoid doing a separate scaled clipping pass.
// Best results are achieved by clipping before scaling, not after.
if (!scaledClipRect.isEmpty()) {
if (scaledSize.isEmpty() && clipRect.isEmpty()) {
// No clipping or scaling before final clip.
clipRect = scaledClipRect;
scaledClipRect = QRect();
} else if (scaledSize.isEmpty()) {
// Clipping, but no scaling: combine the clip regions.
scaledClipRect.translate(clipRect.topLeft());
clipRect = scaledClipRect.intersected(clipRect);
scaledClipRect = QRect();
} else if (clipRect.isEmpty()) {
// No clipping, but scaling: if we can map back to an
// integer pixel boundary, then clip before scaling.
if ((info->image_width % scaledSize.width()) == 0 &&
(info->image_height % scaledSize.height()) == 0) {
int x = scaledClipRect.x() * info->image_width /
scaledSize.width();
int y = scaledClipRect.y() * info->image_height /
scaledSize.height();
int width = (scaledClipRect.right() + 1) *
info->image_width / scaledSize.width() - x;
int height = (scaledClipRect.bottom() + 1) *
info->image_height / scaledSize.height() - y;
clipRect = QRect(x, y, width, height);
scaledSize = scaledClipRect.size();
scaledClipRect = QRect();
}
} else {
// Clipping and scaling: too difficult to figure out,
// and not a likely use case, so do it the long way.
}
}
// Determine the scale factor to pass to libjpeg for quick downscaling.
if (!scaledSize.isEmpty()) {
if (clipRect.isEmpty()) {
info->scale_denom =
qMin(info->image_width / scaledSize.width(),
info->image_height / scaledSize.height());
} else {
info->scale_denom =
qMin(clipRect.width() / scaledSize.width(),
clipRect.height() / scaledSize.height());
}
if (info->scale_denom < 2) {
info->scale_denom = 1;
} else if (info->scale_denom < 4) {
info->scale_denom = 2;
} else if (info->scale_denom < 8) {
info->scale_denom = 4;
} else {
info->scale_denom = 8;
}
info->scale_num = 1;
if (!clipRect.isEmpty()) {
// Correct the scale factor so that we clip accurately.
// It is recommended that the clip rectangle be aligned
// on an 8-pixel boundary for best performance.
while (info->scale_denom > 1 &&
((clipRect.x() % info->scale_denom) != 0 ||
(clipRect.y() % info->scale_denom) != 0 ||
(clipRect.width() % info->scale_denom) != 0 ||
(clipRect.height() % info->scale_denom) != 0)) {
info->scale_denom /= 2;
}
}
}
// If high quality not required, use fast decompression
if( quality < HIGH_QUALITY_THRESHOLD ) {
info->dct_method = JDCT_IFAST;
info->do_fancy_upsampling = FALSE;
}
(void) jpeg_calc_output_dimensions(info);
// Determine the clip region to extract.
QRect imageRect(0, 0, info->output_width, info->output_height);
QRect clip;
if (clipRect.isEmpty()) {
clip = imageRect;
} else if (info->scale_denom == info->scale_num) {
clip = clipRect.intersected(imageRect);
} else {
// The scale factor was corrected above to ensure that
// we don't miss pixels when we scale the clip rectangle.
clip = QRect(clipRect.x() / int(info->scale_denom),
//.........这里部分代码省略.........
示例14: paintEvent
void AxisImp::paintEvent(QPaintEvent* e)
{
// Draw to an off-screen pixmap
QRect rcWidget = rect();
QPixmap pix(rcWidget.size());
pix.fill(this, 0, 0);
QPainter p(&pix);
// Size the scale
int iScaleWidth = 0;
int iScaleHeight = 0;
switch (mScaleDraw.alignment())
{
case QwtScaleDraw::LeftScale:
iScaleWidth = mScaleDraw.extent(p.pen(), p.font());
iScaleHeight = mScaleDraw.minLength(p.pen(), p.font());
mScaleDraw.move(rcWidget.right(), rcWidget.y());
mScaleDraw.setLength(rcWidget.height());
break;
case QwtScaleDraw::RightScale:
iScaleWidth = mScaleDraw.extent(p.pen(), p.font());
iScaleHeight = mScaleDraw.minLength(p.pen(), p.font());
mScaleDraw.move(rcWidget.x(), rcWidget.y());
mScaleDraw.setLength(rcWidget.height());
break;
case QwtScaleDraw::TopScale:
iScaleWidth = mScaleDraw.minLength(p.pen(), p.font());
iScaleHeight = mScaleDraw.extent(p.pen(), p.font());
mScaleDraw.move(rcWidget.x(), rcWidget.bottom());
mScaleDraw.setLength(rcWidget.width());
break;
case QwtScaleDraw::BottomScale:
iScaleWidth = mScaleDraw.minLength(p.pen(), p.font());
iScaleHeight = mScaleDraw.extent(p.pen(), p.font());
mScaleDraw.move(rcWidget.x(), rcWidget.y());
mScaleDraw.setLength(rcWidget.width());
break;
default:
break;
}
// Draw the scale
mScaleDraw.draw(&p, palette());
// Draw the title
if (mTitle.isEmpty() == false)
{
p.setFont(mTitleFont.toQFont());
p.setPen(mTitleColor);
int iTitleHeight = p.fontMetrics().height();
QRect rcText = rcWidget;
switch (mScaleDraw.alignment())
{
case QwtScaleDraw::LeftScale:
p.rotate(-90.0);
p.drawText(-rcWidget.bottom(), rcWidget.left(), rcWidget.height(),
rcWidget.width() - iScaleWidth - TITLE_MARGIN, Qt::AlignCenter, mTitle);
break;
case QwtScaleDraw::RightScale:
p.rotate(90.0);
p.drawText(rcWidget.top(), rcWidget.right(), rcWidget.height(),
rcWidget.width() - iScaleWidth - TITLE_MARGIN, Qt::AlignCenter, mTitle);
break;
case QwtScaleDraw::TopScale:
rcText.setBottom(rcWidget.bottom() - iScaleHeight - TITLE_MARGIN);
p.drawText(rcText, Qt::AlignCenter, mTitle);
break;
case QwtScaleDraw::BottomScale:
rcText.setTop(rcWidget.top() + iScaleHeight + TITLE_MARGIN);
p.drawText(rcText, Qt::AlignCenter, mTitle);
break;
default:
break;
}
}
p.end();
// Draw to the widget
p.begin(this);
p.drawPixmap(rcWidget.topLeft(), pix);
p.end();
}
示例15: paint
void FolderStatusDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
QStyledItemDelegate::paint(painter,option,index);
painter->save();
QFont aliasFont = option.font;
QFont subFont = option.font;
QFont errorFont = subFont;
QFont progressFont = subFont;
progressFont.setPointSize( subFont.pointSize()-1);
//font.setPixelSize(font.weight()+);
aliasFont.setBold(true);
aliasFont.setPointSize( subFont.pointSize()+2 );
QFontMetrics subFm( subFont );
QFontMetrics aliasFm( aliasFont );
QFontMetrics progressFm( progressFont );
int aliasMargin = aliasFm.height()/2;
int margin = subFm.height()/4;
QIcon statusIcon = qvariant_cast<QIcon>(index.data(FolderStatusIconRole));
QString aliasText = qvariant_cast<QString>(index.data(FolderAliasRole));
QString pathText = qvariant_cast<QString>(index.data(FolderPathRole));
QString remotePath = qvariant_cast<QString>(index.data(FolderSecondPathRole));
QStringList errorTexts= qvariant_cast<QStringList>(index.data(FolderErrorMsg));
int overallPercent = qvariant_cast<int>(index.data(SyncProgressOverallPercent));
QString overallString = qvariant_cast<QString>(index.data(SyncProgressOverallString));
QString itemString = qvariant_cast<QString>(index.data(SyncProgressItemString));
int warningCount = qvariant_cast<int>(index.data(WarningCount));
bool syncOngoing = qvariant_cast<bool>(index.data(SyncRunning));
// QString statusText = qvariant_cast<QString>(index.data(FolderStatus));
bool syncEnabled = index.data(FolderSyncEnabled).toBool();
// QString syncStatus = syncEnabled? tr( "Enabled" ) : tr( "Disabled" );
QRect iconRect = option.rect;
QRect aliasRect = option.rect;
iconRect.setLeft( aliasMargin );
iconRect.setTop( iconRect.top() + aliasMargin ); // (iconRect.height()-iconsize.height())/2);
// alias box
aliasRect.setTop(aliasRect.top() + aliasMargin );
aliasRect.setBottom(aliasRect.top() + aliasFm.height());
aliasRect.setRight(aliasRect.right() - aliasMargin );
// remote directory box
QRect remotePathRect = aliasRect;
remotePathRect.setTop(aliasRect.bottom() + margin );
remotePathRect.setBottom(remotePathRect.top() + subFm.height());
// local directory box
QRect localPathRect = remotePathRect;
localPathRect.setTop( remotePathRect.bottom() + margin );
localPathRect.setBottom( localPathRect.top() + subFm.height());
iconRect.setBottom(localPathRect.bottom());
iconRect.setWidth(iconRect.height());
int nextToIcon = iconRect.right()+aliasMargin;
aliasRect.setLeft(nextToIcon);
localPathRect.setLeft(nextToIcon);
remotePathRect.setLeft(nextToIcon);
int iconSize = iconRect.width();
QPixmap pm = statusIcon.pixmap(iconSize, iconSize, syncEnabled ? QIcon::Normal : QIcon::Disabled );
painter->drawPixmap(QPoint(iconRect.left(), iconRect.top()), pm);
// only show the warning icon if the sync is running. Otherwise its
// encoded in the status icon.
if( warningCount > 0 && syncOngoing) {
QRect warnRect;
warnRect.setLeft(iconRect.left());
warnRect.setTop(iconRect.bottom()-17);
warnRect.setWidth(16);
warnRect.setHeight(16);
QIcon warnIcon(":/mirall/resources/warning-16");
QPixmap pm = warnIcon.pixmap(16,16, syncEnabled ? QIcon::Normal : QIcon::Disabled );
painter->drawPixmap(QPoint(warnRect.left(), warnRect.top()),pm );
}
if ((option.state & QStyle::State_Selected)
&& (option.state & QStyle::State_Active)
// Hack: Windows Vista's light blue is not contrasting enough for white
&& !qApp->style()->inherits("QWindowsVistaStyle")) {
painter->setPen(option.palette.color(QPalette::HighlightedText));
} else {
painter->setPen(option.palette.color(QPalette::Text));
}
QString elidedAlias = aliasFm.elidedText(aliasText, Qt::ElideRight, aliasRect.width());
painter->setFont(aliasFont);
painter->drawText(aliasRect, elidedAlias);
painter->setFont(subFont);
//.........这里部分代码省略.........