mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-24 15:20:02 +02:00

- qt4->qt5 - in built qt5 6.1.5 because rhel7 is not upto date with qt5, removed findqwt.cmake - made a fix in qwt lib (qwt_plot_layout.h) to work with 5.15 and lower versions for qrect constr. - qt5 forms fixed, qt4 many hard coding forms switched to forms including qtabwidget, scrolls etc, fonts moved to forms - docking option enabled by default, removed option to disable docking feature from "Mode" - added qVersionResolve utility functions to handle compatibility before and after qt5.12 - qtplots (ian's code) takes in gain mode enable to set some settings within the class, with proper gain plot ticks - ensure gain plots have no zooming of z axis in 2d and y axis in 1d - removed placeholder text in qpalette in main window form as its not supportd until 5.12 (so using qt5.9 designer insted of qt5.15 to cope) - tab order Servers: - fixed some error messages that were empty for fail in funcs (mostly minor as if this error, major issues)
322 lines
10 KiB
Groff
322 lines
10 KiB
Groff
.TH "qwtchangelog" 3 "Mon Jun 1 2020" "Version 6.1.5" "Qwt User's Guide" \" -*- nroff -*-
|
|
.ad l
|
|
.nh
|
|
.SH NAME
|
|
qwtchangelog \- What's new in Qwt 6\&.1
|
|
|
|
.SH "New plot items"
|
|
.PP
|
|
.IP "\(bu" 2
|
|
\fBQwtPlotBarChart\fP
|
|
.br
|
|
Bar chart, see 'examples/distrowatch'
|
|
.IP "\(bu" 2
|
|
\fBQwtPlotMultiBarChart\fP
|
|
.br
|
|
Chart of grouped bars - stacked or aligned side by side\&. See 'examples/barchart'
|
|
.IP "\(bu" 2
|
|
\fBQwtPlotTradingCurve\fP
|
|
.br
|
|
Candlestick or OHLC charts typically used to describe price movements over time\&. See 'examples/stockchart'
|
|
.IP "\(bu" 2
|
|
\fBQwtPlotShapeItem\fP
|
|
.br
|
|
A plot item to display rectangles, circles, polygons and all other type of shapes ( built from intersections or unifications ), that can be expressed by a QPainterPath\&. See 'examples/itemeditor'
|
|
.IP "\(bu" 2
|
|
\fBQwtPlotLegendItem\fP
|
|
.br
|
|
A legend on the plot canvas\&. See 'examples/legends'
|
|
.IP "\(bu" 2
|
|
\fBQwtPlotZoneItem\fP
|
|
.br
|
|
A horizontal or vertical section
|
|
.IP "\(bu" 2
|
|
\fBQwtPlotTextLabel\fP
|
|
.br
|
|
In opposite to a \fBQwtPlotMarker\fP the text is not aligned to a plot coordinate but according to the geometry of the canvas ( f\&.e top/centered for a title )\&. See 'playground/curvetracker'\&.
|
|
.PP
|
|
.SH "Scales beyond linear and logarithmic transformations"
|
|
.PP
|
|
QwtScaleTransformation has been replaced by \fBQwtTransform\fP and its derived classes:
|
|
.PP
|
|
.IP "\(bu" 2
|
|
\fBQwtTransform\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtNullTransform\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtLogTransform\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtPowerTransform\fP
|
|
.PP
|
|
.PP
|
|
Individual transformations ( f\&.e\&. different scaling for special sections ) can be implemented by overloading \fBQwtTransform\fP ( see playground/scaleengine )\&.
|
|
.PP
|
|
\fBQwtLinearScaleEngine\fP and \fBQwtLogScaleEngine\fP are not limited to base 10 anymore\&.
|
|
.SS "Datetime scales"
|
|
A set of a new classes for displaying datetime values:
|
|
.PP
|
|
.IP "\(bu" 2
|
|
\fBQwtDate\fP
|
|
.br
|
|
A collection of methods to convert between QDateTime and doubles
|
|
.IP "\(bu" 2
|
|
\fBQwtDateScaleEngine\fP
|
|
.br
|
|
A scale engine that aligns and finds ticks in terms of datetime units\&.
|
|
.IP "\(bu" 2
|
|
\fBQwtDateScaleDraw\fP
|
|
.br
|
|
A scale draw mapping values to datetime strings\&.
|
|
.PP
|
|
.PP
|
|
Scales for Qt::UTC and Qt::LocalTime are supported\&.
|
|
.SH "Redesign of the dial and meter widgets"
|
|
.PP
|
|
Many parts of the class design of the dial and meter widgets were left over from the 90s ( Qwt 0\&.2, Qt 1\&.1 )\&.
|
|
.PP
|
|
The derivation tree is simpler and more logical:
|
|
.PP
|
|
.IP "\(bu" 2
|
|
\fBQwtAbstractScale\fP is a QWidget
|
|
.IP "\(bu" 2
|
|
\fBQwtAbstractSlider\fP is a \fBQwtAbstractScale\fP\&. ( for sliders without scales QAbstractSlider should be the base class )
|
|
.IP "\(bu" 2
|
|
\fBQwtThermo\fP is also a \fBQwtAbstractScale\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtDial\fP, \fBQwtKnob\fP, \fBQwtSlider\fP are derived from \fBQwtAbstractSlider\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtCounter\fP is derived from QWidget
|
|
.PP
|
|
.PP
|
|
QwtDoubleRange has been removed\&.
|
|
.PP
|
|
All classes use the terminology known from QAbstractSlider - as far as possible\&. The extended \fBsystem for scales\fP is completely supported\&.
|
|
.SH "Basic support for an OpenGL plot canvas"
|
|
.PP
|
|
\fBQwtPlotGLCanvas\fP offers the option to draw plot items using an OpenGL paint engine ( QPaintEngine::OpenGL/OpenGL2 ), This is not what could be implemented with native OpenGL, but it offers hardware acceleration in environments, where the raster paint engine is the only option\&. ( f\&.e Qt4/Windows, or Qt5 on all platforms )\&.
|
|
.PP
|
|
\fBQwtPlotGLCanvas\fP is in an experimental state and is not recommended for average use cases\&.
|
|
.SH "A new system for plot legends"
|
|
.PP
|
|
\fBQwtLegend\fP has been decoupled from \fBQwtPlot\fP and can be replaced by application specific implementations\&. Plot items and the legend exchange the information using \fBQwtLegendData\fP\&.
|
|
.PP
|
|
\fBQwtPlotLegendItem\fP is a new plot item that displays a legend on the plot canvas\&.
|
|
.PP
|
|
The following examples demonstrate how to use the new system:
|
|
.PP
|
|
.IP "\(bu" 2
|
|
examples/legends
|
|
.br
|
|
shows how to use the new legend system
|
|
.IP "\(bu" 2
|
|
examples/stockchart
|
|
.br
|
|
implementats a QTreeView with checkable items as legend
|
|
.PP
|
|
.SH "Off-screen paint device for vector graphics"
|
|
.PP
|
|
\fBQwtGraphic\fP can be copied like QImage or QPixmap but is scalable like QSvgGenerator\&. It is implemented as a record/replay paint device like QPicture\&.
|
|
.SH "QwtWidgetOverlay"
|
|
.PP
|
|
\fBQwtWidgetOverlay\fP is a base class for implementing widget overlays - primarily used for use cases like graphical editors or running cursors for the plot canvas\&.
|
|
.PP
|
|
The following examples show how to use overlays:
|
|
.PP
|
|
.IP "\(bu" 2
|
|
examples/itemeditor
|
|
.IP "\(bu" 2
|
|
examples/curvetracker
|
|
.PP
|
|
.PP
|
|
\fBQwtPicker\fP ( -> \fBQwtPlotPicker\fP, \fBQwtPlotZoomer\fP ) internally uses \fBQwtWidgetOverlay\fP now, making it easier to implement individual rubber bands\&.
|
|
.SH "QwtSymbol"
|
|
.PP
|
|
New symbol types have been introduced:
|
|
.PP
|
|
.IP "\(bu" 2
|
|
\fBQwtSymbol::Path\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtSymbol::Pixmap\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtSymbol::Graphic\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtSymbol::SvgDocument\fP
|
|
.PP
|
|
.PP
|
|
\fBQwtSymbol\fP autodetect the most performant paint strategy for a paint device what is in most situations using a QPixmap cache\&.
|
|
.PP
|
|
\fBQwtSymbol::setPinPoint()\fP allows one to align the symbol individually, f\&.e to the position of the peak of an arrow\&.
|
|
.SH "QwtPlotCurve"
|
|
.PP
|
|
Some optimizations that got lost with introducing the floating point based render code with Qwt 6\&.0 have been reenabled\&. Other specific optimizations have been added\&.
|
|
.PP
|
|
New paint attributes:
|
|
.PP
|
|
.IP "\(bu" 2
|
|
\fBQwtPlotCurve::FilterPoints\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtPlotCurve::MinimizeMemory\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtPlotCurve::ImageBuffer\fP
|
|
.PP
|
|
.PP
|
|
QwtPlotCurve::CacheSymbols has been removed, as caching is implemented in \fBQwtSymbol\fP now\&.
|
|
.br
|
|
.PP
|
|
\fBQwtPlotCurve::drawLines()\fP, \fBQwtPlotCurve::drawDots()\fP, \fBQwtPlotCurve::drawSteps()\fP and \fBQwtPlotCurve::drawSticks()\fP are virtual now\&.
|
|
.SH "QwtPlot"
|
|
.PP
|
|
A footer similar to a title has been added\&.
|
|
.PP
|
|
QwtPlot::ExternalLegend is obsolete with the new \fBsystem for legends\fP\&. The signals QwtPlot::legendClicked(), QwtPlot::legendChecked() have been removed\&. Applications need to connect to \fBQwtLegend::clicked()\fP and \fBQwtLegend::checked()\fP\&.
|
|
.PP
|
|
To support using an OpenGL canvas \fBQwtPlot::setCanvas\fP has been added\&. This has 2 important implications for the application code:
|
|
.PP
|
|
.IP "\(bu" 2
|
|
\fBQwtPlot::canvas()\fP returns QWidget and needs to be casted, when using methods of \fBQwtPlotCanvas\fP\&.
|
|
.IP "\(bu" 2
|
|
\fBQwtPlotCanvas\fP can be created and assigned in application code, what makes it possible to derive and overload methods\&.
|
|
.PP
|
|
.PP
|
|
The initialization of a plot canvas with Qwt 6\&.1 will probably look like this:
|
|
.PP
|
|
.PP
|
|
.nf
|
|
QwtPlotCanvas* canvas = new QwtPlotCanvas();
|
|
canvas->setXY( \&.\&.\&. );
|
|
\&.\&.\&.
|
|
|
|
plot->setCanvas( canvas );
|
|
.fi
|
|
.PP
|
|
.PP
|
|
To have a consistent API \fBQwtPlot::setPlotLayout()\fP has been added,
|
|
.SH "Other"
|
|
.PP
|
|
.SS "QwtScaleDiv"
|
|
The following methods have been added:
|
|
.PP
|
|
.IP "\(bu" 2
|
|
\fBQwtScaleDiv::inverted()\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtScaleDiv::bounded()\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtScaleDiv::isEmpty()\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtScaleDiv::isIncreasing()\fP
|
|
.IP "\(bu" 2
|
|
QDebug operator
|
|
.PP
|
|
.PP
|
|
The following methods have been removed:
|
|
.PP
|
|
.IP "\(bu" 2
|
|
QwtScaleDiv::isValid(), QwtScaleDiv::invalidate()
|
|
.br
|
|
The valid state was left over from early Qwt versions indicating a state of the autoscaler\&.
|
|
.PP
|
|
.SS "QwtScaleEngine"
|
|
The following methods have been added:
|
|
.PP
|
|
.IP "\(bu" 2
|
|
\fBQwtScaleEngine::setBase()\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtScaleEngine::setTransformation()\fP
|
|
.PP
|
|
.SS "QwtPlotLayout"
|
|
The following flags have been added:
|
|
.PP
|
|
.IP "\(bu" 2
|
|
\fBQwtPlotLayout::IgnoreTitle\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtPlotLayout::IgnoreFooter\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtPlotLayout::setAlignCanvasToScale()\fP
|
|
.PP
|
|
.SS "QwtPlotCanvas"
|
|
Rounded borders ( like with style sheets ) can configured using \fBQwtPlotCanvas::setBorderRadius()\fP;
|
|
.SS "Other changes"
|
|
.IP "\(bu" 2
|
|
\fBQwtWeedingCurveFitter\fP
|
|
.br
|
|
\fBQwtWeedingCurveFitter::setChunkSize()\fP has been added, with drastic performance improvements for huge sets of points\&.
|
|
.IP "\(bu" 2
|
|
\fBQwtPlotRenderer\fP The frame of the plot canvas can be rendered, what makes the result even closer to WYSWYG\&. \fBQwtPlotRenderer::exportTo()\fP has been added\&.
|
|
.IP "\(bu" 2
|
|
\fBQwtSystemClock\fP For Qt >= 4\&.9 \fBQwtSystemClock\fP uses QElapsedTimer internally\&. As it doesn't support a similar feature, QwtSystemClock::precision() has been removed\&.
|
|
.IP "\(bu" 2
|
|
QwtPlotAbstractSeriesItem
|
|
.br
|
|
QwtPlotAbstractSeriesItem has been split into \fBQwtPlotSeriesItem\fP and QwtPlotAbstractSeriesStore\&.
|
|
.IP "\(bu" 2
|
|
\fBQwtText\fP
|
|
.br
|
|
A metatype declaration has been added, so that \fBQwtText\fP can be used with QVariant\&.
|
|
.IP "\(bu" 2
|
|
\fBQwtEventPattern\fP, \fBQwtPanner\fP, \fBQwtMagnifier\fP
|
|
.br
|
|
Forgotten Qt3 leftovers have been fixed: int -> Qt::KeyboardModifiers
|
|
.IP "\(bu" 2
|
|
QPen Qt5/Qt4 incompatibility The default pen width for Qt5 is 1, what makes it a non cosmetic\&. To hide this nasty incompatibility several setPen() methods have been added the build pens with a width 0\&. See QPen::isCosmetic(),
|
|
.IP "\(bu" 2
|
|
qwtUpperSampleIndex()
|
|
.br
|
|
A binary search algorithm for sorted samples
|
|
.IP "\(bu" 2
|
|
\fBQwtMatrixRasterData\fP \fBQwtMatrixRasterData::setValue()\fP has been added
|
|
.IP "\(bu" 2
|
|
\fBQwtPicker\fP QwtPicker::rubberBandWidget(), QwtPicker::trackerWidget() have been replaced by \fBQwtPicker::rubberBandOverlay()\fP, \fBQwtPicker::trackerOverlay()\fP\&. \fBQwtPicker::rubberBandMask()\fP has been added\&. QwtPicker::pickRect() has been replaced by \fBQwtPicker::pickArea()\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtPlotItem\fP \fBQwtPlotItem::ItemInterest\fP has been added\&. \fBQwtPlotItem::setRenderThreadCount()\fP was shifted from \fBQwtPlotRasterItem\fP\&.
|
|
.IP "\(bu" 2
|
|
\&.\&.\&.
|
|
.PP
|
|
.SH "Summary of the new classes"
|
|
.PP
|
|
.IP "\(bu" 2
|
|
\fBQwtAbstractLegend\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtDate\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtDateScaleDraw\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtDateScaleEngine\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtGraphic\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtLegendData\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtLegendLabel\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtPainterCommand\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtPixelMatrix\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtPlotAbstractBarChart\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtPlotBarChart\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtPlotMultiBarChart\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtPlotGLCanvas\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtPlotLegendItem\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtPlotShapeItem\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtPlotTextLabel\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtPlotTradingCurve\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtPlotZoneItem\fP
|
|
.IP "\(bu" 2
|
|
QwtPointData
|
|
.IP "\(bu" 2
|
|
\fBQwtPointMapper\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtTransform\fP, \fBQwtNullTransform\fP, \fBQwtLogTransform\fP, \fBQwtPowerTransform\fP
|
|
.IP "\(bu" 2
|
|
\fBQwtWidgetOverlay\fP
|
|
.PP
|
|
|