J'ai besoin de convertir le code ancien Qt de 4.7 à 5.8, j'ai une erreur de compilation dans Qt Creator 4.2.1 Clang 7.0 (Apple) 64bit. J'utilise le dernier Qwt 6.1.3Aucun membre nommé 'setMargin' dans 'QwtPlotLayout' - Convertir Qt4.7 à Qt5.8
Recherche dans le fichier .cpp
#include "frmMainChart_UI.h"
#include <QHeaderView>
#include <qwt_plot_layout.h>
#include <qwt_legend.h>
#include "mpiDateScale.h"
#include "mpiPercentScale.h"
void frmMainChart_UI::setupUI(QWidget *parent_)
{
frmMainTableViewTree_UI::setupUI(QMap<int, QString>(), false, parent_);
delete frmMainTableViewTree_UI::tableCopy;
delete frmMainTableViewTree_UI::table;
chart = new mpiChart(widget);
chart->setAxisScaleDraw(QwtPlot::xBottom, new mpiDateScale());
chart->setAxisScaleDraw(QwtPlot::yLeft, new mpiPercentScale());
chart->plotLayout()->setCanvasMargin(20);
chart->plotLayout()->setMargin(20); // BROKE convert Qt4 to Qt5
chartZoomer = new mpiPlotZoomer(chart->canvas()); // BROKE convert Qt4 to Qt5
chartLegend = new QwtLegend(chart);
chart->insertLegend(chartLegend, QwtPlot::RightLegend);
QLinearGradient grad(0, 0, 1, 1);
grad.setCoordinateMode(QGradient::StretchToDeviceMode);
grad.setColorAt(0, Qt::white);
grad.setColorAt(1, QColor(220, 220, 220));
2 erreurs dans Cpp
../src/ui/frmMainChart_UI.cpp:18 : 26: erreur: aucun membre nommé 'setMargin' dans 'QwtPlotLayout' chart-> plotLayout() -> setMargin (20); // Broke convertir Qt4 à QT5
../src/ui/frmMainChart_UI.cpp:19:23: erreur: aucun constructeur correspondant pour l'initialisation de la toile 'mpiPlotZoomer' chartZoomer = new mpiPlotZoomer (chart-> ()); // Broke convertir Qt4 à QT5
^
5 avertissements et 2 erreurs générées make: *** [frmMainChart_UI.o] Erreur 1 06:58:25: Le processus «/usr/bin/make "sorti avec le code 2. Erreur lors de la construction/du déploiement du projet mypersonalindex (kit: Desktop Qt 5.8.0 clang 64bit) Lors de l'exécution de l'étape" Make " 06:58:25: Temps écoulé: 00:01.
Le Qwt 6.1.3 Docs a la fonction de membre http://qwt.sourceforge.net/class_qwt_plot_layout.html
void setCanvasMargin (int margin, int axis=-1)
Mais aucune fonction de membre utilisés
setMargin
Mon C++ compétences est assez limitée, ne vous voyez des modifications mineures qui pourrait convertir cela de Qt4 à Qt5. ... alors quel est le remplacement?
En regardant mpiChart.h concerne probablement la toile() erreur
#ifndef MPICHART_H
#define MPICHART_H
#include "qwt_plot.h"
class mpiChart : public QwtPlot
{
Q_OBJECT
public:
mpiChart(QWidget *parent_ = 0):
QwtPlot(parent_)
{}
public slots:
void exportChart();
};
#endif // MPICHART_H
Et regardant dans mpiPlotZoomer.h se rapporte à une erreur de toile()
#ifndef MPIPLOTZOOMER_H
#define MPIPLOTZOOMER_H
#include <qwt_plot_zoomer.h>
#include <qwt_plot_canvas.h> // JDL convert Qt4 to Qt5
#include <qwt_compat.h> // JDL convert Qt4 to Qt5
class mpiPlotZoomer: public QwtPlotZoomer
{
public:
mpiPlotZoomer(QwtPlotCanvas *canvas_):
QwtPlotZoomer(canvas_, false)
{
setTrackerMode(AlwaysOn);
}
virtual QwtText trackerText(const QwtDoublePoint &pos_) const;
};
#endif // MPIPLOTZOOMER_H
Quelle version de Qwt utilisiez-vous avec Qt 4.7? – jpo38
Etrange, Qwt avec Qt 4.7 semble être Qwt 5.5.5 à partir de 2011, (mais la dernière Qwt a cette version 1.6.3 qui est maintenant installée avec Qt5.8) – bullflag
La dernière version de qwt est 6.1.3, pas 1.6.3: http://qwt.sourceforge.net/index.html – jpo38