本文整理汇总了C++中QwtMetricsMap::screenToLayoutX方法的典型用法代码示例。如果您正苦于以下问题:C++ QwtMetricsMap::screenToLayoutX方法的具体用法?C++ QwtMetricsMap::screenToLayoutX怎么用?C++ QwtMetricsMap::screenToLayoutX使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QwtMetricsMap
的用法示例。
在下文中一共展示了QwtMetricsMap::screenToLayoutX方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: printLegend
void QwtPlot::printLegend(QPainter *painter, const QRect &rect) const
{
if ( !legend() || legend()->isEmpty() )
return;
QLayout *l = legend()->contentsWidget()->layout();
if ( l == 0 || !l->inherits("QwtDynGridLayout") )
return;
QwtDynGridLayout *legendLayout = (QwtDynGridLayout *)l;
uint numCols = legendLayout->columnsForWidth(rect.width());
#if QT_VERSION < 0x040000
QValueList<QRect> itemRects =
legendLayout->layoutItems(rect, numCols);
#else
QList<QRect> itemRects =
legendLayout->layoutItems(rect, numCols);
#endif
int index = 0;
#if QT_VERSION < 0x040000
QLayoutIterator layoutIterator = legendLayout->iterator();
for ( QLayoutItem *item = layoutIterator.current();
item != 0; item = ++layoutIterator) {
#else
for ( int i = 0; i < legendLayout->count(); i++ ) {
QLayoutItem *item = legendLayout->itemAt(i);
#endif
QWidget *w = item->widget();
if ( w ) {
painter->save();
painter->setClipping(true);
QwtPainter::setClipRect(painter, itemRects[index]);
printLegendItem(painter, w, itemRects[index]);
index++;
painter->restore();
}
}
}
/*!
Print the legend item into a given rectangle.
\param painter Painter
\param w Widget representing a legend item
\param rect Bounding rectangle
*/
void QwtPlot::printLegendItem(QPainter *painter,
const QWidget *w, const QRect &rect) const
{
if ( w->inherits("QwtLegendItem") ) {
QwtLegendItem *item = (QwtLegendItem *)w;
painter->setFont(item->font());
item->drawItem(painter, rect);
}
}
/*!
\brief Paint a scale into a given rectangle.
Paint the scale into a given rectangle.
\param painter Painter
\param axisId Axis
\param startDist Start border distance
\param endDist End border distance
\param baseDist Base distance
\param rect Bounding rectangle
*/
void QwtPlot::printScale(QPainter *painter,
int axisId, int startDist, int endDist, int baseDist,
const QRect &rect) const
{
if (!axisEnabled(axisId))
return;
const QwtScaleWidget *scaleWidget = axisWidget(axisId);
if ( scaleWidget->isColorBarEnabled()
&& scaleWidget->colorBarWidth() > 0) {
const QwtMetricsMap map = QwtPainter::metricsMap();
QRect r = map.layoutToScreen(rect);
r.setWidth(r.width() - 1);
r.setHeight(r.height() - 1);
scaleWidget->drawColorBar(painter, scaleWidget->colorBarRect(r));
const int off = scaleWidget->colorBarWidth() + scaleWidget->spacing();
if ( scaleWidget->scaleDraw()->orientation() == Qt::Horizontal )
baseDist += map.screenToLayoutY(off);
else
baseDist += map.screenToLayoutX(off);
}
//.........这里部分代码省略.........
示例2: draw
/*!
Draw a text into a rectangle
\param painter Painter
\param rect Rectangle
*/
void QwtText::draw(QPainter *painter, const QRect &rect) const
{
if ( d_data->paintAttributes & PaintBackground )
{
if ( d_data->backgroundPen != Qt::NoPen ||
d_data->backgroundBrush != Qt::NoBrush )
{
painter->save();
painter->setPen(QwtPainter::scaledPen(d_data->backgroundPen));
painter->setBrush(d_data->backgroundBrush);
#if QT_VERSION < 0x040000
QwtPainter::drawRect(painter, rect);
#else
const QRect r(rect.x(), rect.y(),
rect.width() - 1, rect.height() - 1);
QwtPainter::drawRect(painter, r);
#endif
painter->restore();
}
}
painter->save();
if ( d_data->paintAttributes & PaintUsingTextFont )
{
painter->setFont(d_data->font);
}
if ( d_data->paintAttributes & PaintUsingTextColor )
{
if ( d_data->color.isValid() )
painter->setPen(d_data->color);
}
QRect expandedRect = rect;
if ( d_data->layoutAttributes & MinimumLayout )
{
#if QT_VERSION < 0x040000
const QFont font(painter->font());
#else
// We want to calculate in screen metrics. So
// we need a font that uses screen metrics
const QFont font(painter->font(), QApplication::desktop());
#endif
int left, right, top, bottom;
d_data->textEngine->textMargins(
font, d_data->text,
left, right, top, bottom);
const QwtMetricsMap map = QwtPainter::metricsMap();
left = map.screenToLayoutX(left);
right = map.screenToLayoutX(right);
top = map.screenToLayoutY(top);
bottom = map.screenToLayoutY(bottom);
expandedRect.setTop(rect.top() - top);
expandedRect.setBottom(rect.bottom() + bottom);
expandedRect.setLeft(rect.left() - left);
expandedRect.setRight(rect.right() + right);
}
d_data->textEngine->draw(painter, expandedRect,
d_data->renderFlags, d_data->text);
painter->restore();
}
示例3: printScale
void Plot::printScale(QPainter *painter, int axisId, int startDist, int endDist,
int baseDist, const QRect &rect) const
{
if (!axisEnabled(axisId))
return;
const QwtScaleWidget *scaleWidget = axisWidget(axisId);
if ( scaleWidget->isColorBarEnabled()
&& scaleWidget->colorBarWidth() > 0)
{
const QwtMetricsMap map = QwtPainter::metricsMap();
const QRect r = map.layoutToScreen(rect);
scaleWidget->drawColorBar(painter, scaleWidget->colorBarRect(r));
const int off = scaleWidget->colorBarWidth() + scaleWidget->spacing();
if ( scaleWidget->scaleDraw()->orientation() == Qt::Horizontal )
baseDist += map.screenToLayoutY(off);
else
baseDist += map.screenToLayoutX(off);
}
QwtScaleDraw::Alignment align;
int x, y, w;
const int bw2 = scaleWidget->penWidth() / 2;
switch(axisId)
{
case yLeft:
{
x = rect.right() - baseDist + 1 - bw2;
y = rect.y() + startDist;
w = rect.height() - startDist - endDist;
align = QwtScaleDraw::LeftScale;
break;
}
case yRight:
{
x = rect.left() + baseDist;
if (scaleWidget->penWidth() % 2 == 0)
x += 1;
y = rect.y() + startDist;
w = rect.height() - startDist - endDist + bw2;
align = QwtScaleDraw::RightScale;
break;
}
case xTop:
{
x = rect.left() + startDist;
y = rect.bottom() - baseDist + 1;
if (scaleWidget->penWidth() % 2 == 0)
y -= bw2;
w = rect.width() - startDist - endDist;
align = QwtScaleDraw::TopScale;
break;
}
case xBottom:
{
x = rect.left() + startDist;
y = rect.top() + baseDist;
if (scaleWidget->penWidth() % 2 == 1)
y += bw2;
w = rect.width() - startDist - endDist + bw2;
align = QwtScaleDraw::BottomScale;
break;
}
default:
return;
}
scaleWidget->drawTitle(painter, align, rect);
painter->save();
painter->setFont(scaleWidget->font());
QPen pen = painter->pen();
pen.setWidth(scaleWidget->penWidth());
painter->setPen(pen);
QwtScaleDraw *sd = (QwtScaleDraw *)scaleWidget->scaleDraw();
const QPoint sdPos = sd->pos();
const int sdLength = sd->length();
sd->move(x, y);
sd->setLength(w);
#if QT_VERSION < 0x040000
sd->draw(painter, scaleWidget->palette().active());
#else
QPalette palette = scaleWidget->palette();
palette.setCurrentColorGroup(QPalette::Active);
sd->draw(painter, palette);
#endif
// reset previous values
sd->move(sdPos);
sd->setLength(sdLength);
//.........这里部分代码省略.........
示例4: printLegend
//.........这里部分代码省略.........
break;
}
default:
return;
}
const QwtScaleWidget *scaleWidget = axisWidget(axisId);
scaleWidget->drawTitle(painter, align, rect);
painter->save();
painter->setFont(scaleWidget->font());
QwtScaleDraw *sd = (QwtScaleDraw *)scaleWidget->scaleDraw();
const QPoint sdPos = sd->pos();
const int sdLength = sd->length();
sd->move(x, y);
sd->setLength(w);
#if QT_VERSION < 0x040000
sd->draw(painter, scaleWidget->palette().active());
#else
QPalette palette = scaleWidget->palette();
palette.setCurrentColorGroup(QPalette::Active);
sd->draw(painter, palette);
#endif
// reset previous values
sd->move(sdPos);
sd->setLength(sdLength);
painter->restore();
}
/*!
Print the canvas into a given rectangle.
\param painter Painter
\param map Maps mapping between plot and paint device coordinates
\param canvasRect Bounding rectangle
\param pfilter Print filter
\sa QwtPlotPrintFilter
*/
void QwtPlot::printCanvas(QPainter *painter, const QRect &canvasRect,
const QwtArray<QwtScaleMap> &map, const QwtPlotPrintFilter &pfilter) const
{
if ( pfilter.options() & QwtPlotPrintFilter::PrintCanvasBackground )
{
painter->setPen(Qt::NoPen);
QBrush bgBrush;
#if QT_VERSION >= 0x040000
bgBrush = canvas()->palette().brush(backgroundRole());
#else
QColorGroup::ColorRole role =
QPalette::backgroundRoleFromMode( backgroundMode() );
bgBrush = canvas()->colorGroup().brush( role );
#endif
painter->setBrush(bgBrush);
int x1 = 0;
int x2 = 0;
int y1 = 0;
int y2 = 0;
#if QT_VERSION >= 0x040000
switch(painter->device()->paintEngine()->type())
{
case QPaintEngine::PostScript:
x2 = 1;
y2 = 1;
break;
default:;
}
#endif
const QwtMetricsMap map = QwtPainter::metricsMap();
x1 = map.screenToLayoutX(x1);
x2 = map.screenToLayoutX(x2);
y1 = map.screenToLayoutY(y1);
y2 = map.screenToLayoutY(y2);
QwtPainter::drawRect(painter,
canvasRect.x() + x1, canvasRect.y() + y1,
canvasRect.width() - x2, canvasRect.height() - y2);
}
else
{
// Paint the canvas borders instead.
painter->setPen(QPen(Qt::black));
painter->setBrush(QBrush(Qt::NoBrush));
QwtPainter::drawRect(painter, canvasRect);
}
painter->setClipping(true);
QwtPainter::setClipRect(painter, canvasRect);
drawItems(painter, canvasRect, map, pfilter);
}