我使用" canvas"使用" SetLineWidth"参数。
我想,这是由创建继承引起的,或者可能是由于库安装造成的。我已经安装了qwt库,并且没有问题。
我想,最好在这里写下代码以使其更加具体和有用:
#include <qwt/qwt_plot.h>
#include <qwt/qwt_plot_marker.h>
#include <qwt/qwt_plot_curve.h>
#include <qwt/qwt_legend.h>
#include <qwt/qwt_series_data.h>
#include <qwt/qwt_plot_canvas.h>
#include <qwt/qwt_plot_panner.h>
#include <qwt/qwt_plot_magnifier.h>
#include <qwt/qwt_text.h>
#include <qwt/qwt_math.h>
#include <qwt/qwt_plot_renderer.h>
#include <math.h>
#include <qprinter.h>
#include <qprintdialog.h>
#include <QMouseEvent>
#include "plot.h"
Plot::Plot(QWidget *parent, char *titel, int bufSize, bool fixedScaleX, bool fixedScaleY,
double minX, double maxX, double minY, double maxY,
bool displayScaleX, bool displayScaleY,
char* textScaleX, char* textScaleY) : QwtPlot(parent) {
mY = (QwtPlotMarker*) 0;
setAutoFillBackground(true);
setPalette(QPalette(QColor(165, 193, 228)));
QwtText title(titel);
title.setFont(QFont("Arial", 11));
setTitle(title);
if(fixedScaleX) {
setAxisScale(xBottom, minX, maxX);
}
if(fixedScaleY) {
setAxisScale(yLeft, minY, maxY);
}
if(displayScaleX) {
enableAxis(xBottom, true);
if(textScaleX[0] != '\0') {
QwtText xAxis(textScaleX);
xAxis.setFont(QFont("Arial", 11));
setAxisTitle(xBottom, xAxis);
}
} else {
enableAxis(xBottom, false);
}
if(displayScaleY) {
enableAxis(yLeft, true);
if(textScaleY[0] != '\0') {
QwtText yAxis(textScaleY);
yAxis.setFont(QFont("Arial", 11));
setAxisTitle(yLeft, yAxis);
}
} else {
enableAxis(yLeft, false);
}
// canvas
canvas()->setLineWidth(3); // Problem is here
canvas()->setFrameStyle(QFrame::Box | QFrame::Plain);//Problem is here
canvas()->setBorderRadius(15);//Problem is here
QPalette canvasPalette(Qt::black);
canvasPalette.setColor(QPalette::Foreground, QColor(133, 190, 232));
canvas()->setPalette(canvasPalette);
}
错误是:
'class QWidget' has no member named 'setLineWidth'
'class QWidget' has no member named 'setFrameStyle'
'class QWidget' has no member named 'setBorderRadius'
代码正在进行,。我在上面提到了问题所在。我试图自己解决这个问题,但我无法弄清楚问题导致的原因。
如果有任何建议,我很高兴知道这一点。
提前致谢..
答案 0 :(得分:0)
您的类是QwtPlot的子类,因此canvas()是QwtPlot :: canvas(),它返回指向成员画布的QWidget *。根据文档,默认画布是QwtPlotCanvas。
您可以从返回的QWidget *转换为QwtPlotCanvas,但是您应该检查类型是否正确:
QwtPlotCanvas * my_canvas = dynamic_cast<QwtPlotCanvas *>(canvas());
if(my_canvas)
{
my_canvas->setLineWidth(3);
// etc
}