本文整理汇总了C++中QwtPlot::axisWidget方法的典型用法代码示例。如果您正苦于以下问题:C++ QwtPlot::axisWidget方法的具体用法?C++ QwtPlot::axisWidget怎么用?C++ QwtPlot::axisWidget使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QwtPlot
的用法示例。
在下文中一共展示了QwtPlot::axisWidget方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: alignVAxes
void PlotMatrix::alignVAxes( int col, int axis )
{
if ( axis != QwtPlot::yLeft && axis != QwtPlot::yRight )
return;
double maxExtent = 0;
for ( int row = 0; row < numRows(); row++ )
{
QwtPlot *p = plot( row, col );
if ( p )
{
QwtScaleWidget *scaleWidget = p->axisWidget( axis );
QwtScaleDraw *sd = scaleWidget->scaleDraw();
sd->setMinimumExtent( 0.0 );
const double extent = sd->extent( scaleWidget->font() );
if ( extent > maxExtent )
maxExtent = extent;
}
}
for ( int row = 0; row < numRows(); row++ )
{
QwtPlot *p = plot( row, col );
if ( p )
{
QwtScaleWidget *scaleWidget = p->axisWidget( axis );
scaleWidget->scaleDraw()->setMinimumExtent( maxExtent );
}
}
}
示例2: showColorScale
void Spectrogram::showColorScale(int axis, bool on)
{
if (hasColorScale() == on && color_axis == axis)
return;
QwtPlot *plot = this->plot();
if (!plot)
return;
QwtScaleWidget *colorAxis = plot->axisWidget(color_axis);
colorAxis->setColorBarEnabled(false);
color_axis = axis;
// We must switch main and the color scale axes and their respective scales
int xAxis = this->xAxis();
int yAxis = this->yAxis();
int oldMainAxis = yAxis;
if (axis == QwtPlot::xBottom || axis == QwtPlot::xTop)
{
oldMainAxis = xAxis;
xAxis = 5 - color_axis;
}
else if (axis == QwtPlot::yLeft || axis == QwtPlot::yRight)
{
oldMainAxis = yAxis;
yAxis = 1 - color_axis;
}
// First we switch axes
setAxis(xAxis, yAxis);
// Next we switch axes scales
QwtScaleDiv *scDiv = plot->axisScaleDiv(oldMainAxis);
if (axis == QwtPlot::xBottom || axis == QwtPlot::xTop)
plot->setAxisScale(xAxis, scDiv->lBound(), scDiv->hBound());
else if (axis == QwtPlot::yLeft || color_axis == QwtPlot::yRight)
plot->setAxisScale(yAxis, scDiv->lBound(), scDiv->hBound());
colorAxis = plot->axisWidget(color_axis);
plot->setAxisScale(color_axis, data().range().minValue(), data().range().maxValue());
colorAxis->setColorBarEnabled(on);
colorAxis->setColorMap(data().range(), colorMap());
if (!plot->axisEnabled(color_axis))
plot->enableAxis(color_axis);
colorAxis->show();
plot->updateLayout();
}
示例3: alignScaleBorder
void PlotMatrix::alignScaleBorder( int rowOrColumn, int axis )
{
int startDist = 0;
int endDist = 0;
if ( axis == QwtPlot::yLeft )
{
QwtPlot *p = plotAt( rowOrColumn, 0 );
if ( p )
p->axisWidget( axis )->getBorderDistHint( startDist, endDist );
for ( int col = 1; col < numColumns(); col++ )
{
QwtPlot *p = plotAt( rowOrColumn, col );
if ( p )
p->axisWidget( axis )->setMinBorderDist( startDist, endDist );
}
}
else if ( axis == QwtPlot::yRight )
{
QwtPlot *p = plotAt( rowOrColumn, numColumns() - 1 );
if ( p )
p->axisWidget( axis )->getBorderDistHint( startDist, endDist );
for ( int col = 0; col < numColumns() - 1; col++ )
{
QwtPlot *p = plotAt( rowOrColumn, col );
if ( p )
p->axisWidget( axis )->setMinBorderDist( startDist, endDist );
}
}
if ( axis == QwtPlot::xTop )
{
QwtPlot *p = plotAt( rowOrColumn, 0 );
if ( p )
p->axisWidget( axis )->getBorderDistHint( startDist, endDist );
for ( int row = 1; row < numRows(); row++ )
{
QwtPlot *p = plotAt( row, rowOrColumn );
if ( p )
p->axisWidget( axis )->setMinBorderDist( startDist, endDist );
}
}
else if ( axis == QwtPlot::xBottom )
{
QwtPlot *p = plotAt( numRows() - 1, rowOrColumn );
if ( p )
p->axisWidget( axis )->getBorderDistHint( startDist, endDist );
for ( int row = 0; row < numRows() - 1; row++ )
{
QwtPlot *p = plotAt( row, rowOrColumn );
if ( p )
p->axisWidget( axis )->setMinBorderDist( startDist, endDist );
}
}
}
示例4: QFrame
PlotMatrix::PlotMatrix( int numRows, int numColumns, QWidget *parent ):
QFrame( parent )
{
d_data = new PrivateData();
d_data->plotWidgets.resize( numRows * numColumns );
QGridLayout *layout = new QGridLayout( this );
for ( int row = 0; row < numRows; row++ )
{
for ( int col = 0; col < numColumns; col++ )
{
QwtPlot *plot = new QwtPlot( this );
layout->addWidget( plot, row, col );
for ( int axis = 0; axis < QwtPlot::axisCnt; axis++ )
{
connect( plot->axisWidget( axis ),
SIGNAL( scaleDivChanged() ), SLOT( scaleDivChanged() ) );
}
d_data->plotWidgets[row * numColumns + col] = plot;
}
}
updateLayout();
}
示例5: setColorBarWidth
void Spectrogram::setColorBarWidth(int width) {
QwtPlot *plot = this->plot();
if (!plot)
return;
QwtScaleWidget *colorAxis = plot->axisWidget(color_axis);
colorAxis->setColorBarWidth(width);
}
示例6: colorBarWidth
int Spectrogram::colorBarWidth() {
QwtPlot *plot = this->plot();
if (!plot)
return 0;
QwtScaleWidget *colorAxis = plot->axisWidget(color_axis);
return colorAxis->colorBarWidth();
}
示例7: hasColorScale
bool Spectrogram::hasColorScale() {
QwtPlot *plot = this->plot();
if (!plot)
return false;
if (!plot->axisEnabled(color_axis))
return false;
QwtScaleWidget *colorAxis = plot->axisWidget(color_axis);
return colorAxis->isColorBarEnabled();
}
示例8: setCustomColorMap
void Spectrogram::setCustomColorMap(const QwtColorMap &map) {
setColorMap(map);
// color_map = map;
color_map_policy = Custom;
QwtPlot *plot = this->plot();
if (!plot)
return;
QwtScaleWidget *colorAxis = plot->axisWidget(color_axis);
if (colorAxis) {
colorAxis->setColorMap(this->data().range(), this->getColorMap());
}
}
示例9: setDefaultColorMap
void Spectrogram::setDefaultColorMap()
{
color_map = defaultColorMap();
setColorMap(color_map);
color_map_policy = Default;
QwtPlot *plot = this->plot();
if (!plot)
return;
QwtScaleWidget *colorAxis = plot->axisWidget(color_axis);
if (colorAxis)
colorAxis->setColorMap(this->data().range(), this->colorMap());
}
示例10: setGrayScale
void Spectrogram::setGrayScale()
{
color_map = QwtLinearColorMap(Qt::black, Qt::white);
setColorMap(color_map);
color_map_policy = GrayScale;
QwtPlot *plot = this->plot();
if (!plot)
return;
QwtScaleWidget *colorAxis = plot->axisWidget(color_axis);
if (colorAxis)
colorAxis->setColorMap(data().range(), colorMap());
}
示例11: setDefaultColorMap
void Spectrogram::setDefaultColorMap() {
MantidColorMap map = getDefaultColorMap();
mCurrentColorMap = map.getFilePath();
mColorMap = map;
setColorMap(map);
color_map_policy = Default;
QwtPlot *plot = this->plot();
if (!plot)
return;
QwtScaleWidget *colorAxis = plot->axisWidget(color_axis);
if (colorAxis)
colorAxis->setColorMap(this->data().range(), this->colorMap());
}
示例12: updateData
void Spectrogram::updateData(Matrix *m)
{
if (!m)
return;
QwtPlot *plot = this->plot();
if (!plot)
return;
setData(MatrixData(m));
setLevelsNumber(levels());
QwtScaleWidget *colorAxis = plot->axisWidget(color_axis);
if (colorAxis)
colorAxis->setColorMap(data().range(), colorMap());
plot->setAxisScale(color_axis, data().range().minValue(), data().range().maxValue());
plot->replot();
}
示例13: scaleDivChanged
void PlotMatrix::scaleDivChanged()
{
if ( d_data->inScaleSync )
return;
d_data->inScaleSync = true;
QwtPlot *plt = NULL;
int axisId = -1;
int rowOrColumn = -1;
// find the changed axis
for ( int row = 0; row < numRows(); row++ )
{
for ( int col = 0; col < numColumns(); col++ )
{
QwtPlot *p = plot( row, col );
if ( p )
{
for ( int axis = 0; axis < QwtPlot::axisCnt; axis++ )
{
if ( p->axisWidget( axis ) == sender() )
{
plt = p;
axisId = axis;
if ( axisId == QwtPlot::xBottom || axisId == QwtPlot::xTop )
rowOrColumn = col;
else
rowOrColumn = row;
}
}
}
}
}
if ( plt )
{
// synchronize the axes
if ( axisId == QwtPlot::xBottom || axisId == QwtPlot::xTop )
{
for ( int row = 0; row < numRows(); row++ )
{
QwtPlot *p = plot( row, rowOrColumn );
if ( p != plt )
p->setAxisScaleDiv( axisId, plt->axisScaleDiv( axisId ) );
}
}
else
{
for ( int col = 0; col < numColumns(); col++ )
{
QwtPlot *p = plot( rowOrColumn, col );
if ( p != plt )
p->setAxisScaleDiv( axisId, plt->axisScaleDiv( axisId ) );
}
}
updateLayout();
}
d_data->inScaleSync = false;
}
示例14: QRect
// Получение геометрии индикации масштабирования шкалы
QRect *QAxisZoomSvc::axisZoomRect(QPoint evpos,int ax)
{
// получаем указатель на график
QwtPlot *plt = zoom->plot();
// определяем (для удобства) геометрию
QRect gc = plt->canvas()->geometry(); // канвы графика
QRect gw = plt->axisWidget(ax)->geometry(); // и виджета шкалы
// определяем текущее положение курсора относительно канвы графика
int x = evpos.x() + gw.x() - gc.x() - scb_pxl;
int y = evpos.y() + gw.y() - gc.y() - scb_pyt;
// запоминаем (для удобства)
int wax = gw.width(); // ширину виджета шкалы
int hax = gw.height(); // и высоту
// читаем режим масштабирования
QwtChartZoom::QConvType ct = zoom->regim();
// объявляем положение левого верхнего угла,
int wl,wt,ww,wh; // ширину и высоту
// если масштабируется горизонтальная шкала, то
if (ax == QwtPlot::xBottom ||
ax == QwtPlot::xTop)
{
// если изменяется правая граница, то
if (ct == QwtChartZoom::ctAxisHR)
{
// ограничение на положение курсора слева
int mn = floor((float)(scb_pw/16));
// если курсор слишком близко к левой границе, то
if (x < mn) x = mn;
// ширина прямоугольника
ww = floor((float)(x * scb_pw / scp_x));
// применяем ограничения
ww = limitSize(ww,scb_pw);
// левый отступ прямоугольника
wl = sab_pxl;
}
else // иначе (изменяется левая граница)
{
// ограничение на положение курсора справа
int mx = floor((float)(15*scb_pw/16));
// если курсор слишком близко к правой границе, то
if (x > mx) x = mx;
// ширина прямоугольника
ww = floor((float)((scb_pw - x) * scb_pw / (scb_pw - scp_x)));
// применяем ограничения
ww = limitSize(ww,scb_pw);
// левый отступ прямоугольника
wl = sab_pxl + scb_pw - ww;
}
// высота прямоугольника
wh = 4;
// верхний отступ прямоугольника
wt = 10; // для нижней шкалы
// если не помещается на шкале, корректируем
if (wt + wh > hax) wt = hax - wh;
// для верхней шкалы симметрично
if (ax == QwtPlot::xTop) wt = hax - wt - wh;
}
else // иначе (масштабируется вертикальная шкала)
{
// если изменяется нижняя граница, то
if (ct == QwtChartZoom::ctAxisVB)
{
// ограничение на положение курсора сверху
int mn = floor((float)(scb_ph/16));
// если курсор слишком близко к верхней границе, то
if (y < mn) y = mn;
// высота прямоугольника
wh = floor((float)(y * scb_ph / scp_y));
// применяем ограничения
wh = limitSize(wh,scb_ph);
// верхний отступ прямоугольника
wt = sab_pyt;
}
else // иначе (изменяется верхняя граница)
{
// ограничение на положение курсора снизу
int mx = floor((float)(15*scb_ph/16));
// если курсор слишком близко к нижней границе, то
if (y > mx) y = mx;
// высота прямоугольника
wh = floor((float)((scb_ph - y) * scb_ph / (scb_ph - scp_y)));
// применяем ограничения
wh = limitSize(wh,scb_ph);
// верхний отступ прямоугольника = смещению курсора
wt = sab_pyt + scb_ph - wh;
}
// ширина прямоугольника
ww = 4;
// верхний отступ прямоугольника
wl = 10; // для правой шкалы
// если не помещается на шкале, корректируем
if (wl + ww > wax) wl = wax - ww;
// для левой шкалы симметрично
if (ax == QwtPlot::yLeft) wl = wax - wl - ww;
}
// создаем и возвращаем геометрию виджета
// с вычисленными размерами
return new QRect(wl,wt,ww,wh);
}
示例15: startAxisZoom
// Обработчик нажатия на кнопку мыши над шкалой
// (включение изменения масштаба шкалы)
void QAxisZoomSvc::startAxisZoom(QMouseEvent *mEvent,int ax)
{
// фиксируем исходные границы графика (если этого еще не было сделано)
zoom->fixBounds();
// если в данный момент еще не включен ни один из режимов
if (zoom->regim() == QwtChartZoom::ctNone)
{
// если нажата левая кнопка мыши, то
// включаем один из режимов масштабирования
if (mEvent->button() == Qt::LeftButton)
{
// получаем указатели на
QwtPlot *plt = zoom->plot(); // график
QwtScaleWidget *sw = plt->axisWidget(ax); // виджет шкалы
// получаем карту основной горизонтальной шкалы
QwtScaleMap sm = plt->canvasMap(zoom->masterH());
// для того чтобы фиксировать начальные левую и правую границы
scb_xl = sm.s1(); scb_xr = sm.s2(); scb_wx = sm.sDist();
// аналогично получаем карту основной вертикальной шкалы
sm = plt->canvasMap(zoom->masterV());
// для того чтобы фиксировать начальные нижнюю и верхнюю границы
scb_yb = sm.s1(); scb_yt = sm.s2(); scb_hy = sm.sDist();
// определяем (для удобства) геометрию
QRect gc = plt->canvas()->geometry(); // канвы графика
QRect gw = sw->geometry(); // и виджета шкалы
// текущее левое смещение графика (в пикселах относительно канвы)
scb_pxl = plt->transform(zoom->masterH(),scb_xl);
// текущая ширина графика (в пикселах)
scb_pw = plt->transform(zoom->masterH(),scb_xr) - scb_pxl;
// текущее левое смещение графика
// (в пикселах относительно виджета шкалы)
sab_pxl = scb_pxl + gc.x() - gw.x();
// текущее верхнее смещение графика (в пикселах относительно канвы)
scb_pyt = plt->transform(zoom->masterV(),scb_yt);
// текущая высота графика (в пикселах)
scb_ph = plt->transform(zoom->masterV(),scb_yb) - scb_pyt;
// текущее верхнее смещение графика
// (в пикселах относительно виджета шкалы)
sab_pyt = scb_pyt + gc.y() - gw.y();
// запоминаем текущее положение курсора относительно канвы
// (за вычетом смещений графика)
scp_x = mEvent->pos().x() - sab_pxl;
scp_y = mEvent->pos().y() - sab_pyt;
// если масштабируется горизонтальная шкала
if (ax == QwtPlot::xBottom ||
ax == QwtPlot::xTop)
{
// если левая граница меньше правой,
if (scb_wx > 0)
// если ширина канвы больше минимума,
if (scb_pw > 36)
{
// в зависимости от положения курсора
// (правее или левее середины шкалы)
// включаем соответствующий режим - изменение
if (scp_x >= floor((float)(scb_pw/2)))
zoom->setRegim(QwtChartZoom::ctAxisHR); // правой границы
else zoom->setRegim(QwtChartZoom::ctAxisHL); // или левой
}
}
else // иначе (масштабируется вертикальная шкала)
{
// если нижняя граница меньше верхней,
if (scb_hy > 0)
// если высота канвы больше минимума,
if (scb_ph > 18)
{
// в зависимости от положения курсора
// (ниже или выше середины шкалы)
// включаем соответствующий режим - изменение
if (scp_y >= floor((float)(scb_ph/2)))
zoom->setRegim(QwtChartZoom::ctAxisVB); // нижней границы
else zoom->setRegim(QwtChartZoom::ctAxisVT); // или верхней
}
}
// если один из режимов был включен
if (zoom->regim() != QwtChartZoom::ctNone)
{
// запоминаем текущий курсор
tCursor = sw->cursor();
// устанавливаем курсор PointingHand
sw->setCursor(Qt::PointingHandCursor);
// если легкий режим и включена индикация, то
if (light && indiAxZ)
{
// создаем виджет, индицирующий масштабирование шкалы
zwid = new QWidget(plt->axisWidget(ax));
// назначаем ему цвет
zwid->setStyleSheet(QString(
"background-color:rgb(%1,%2,%3);").arg(
awClr.red()).arg(awClr.green()).arg(awClr.blue()));
// и прорисовываем
showZoomWidget(mEvent->pos(),ax);
}
}
}
}
}