我正在尝试按照作者所说的说明编译程序(可在此处找到:http://sourceforge.net/projects/lisem/)。但是在Qt Creator中编译时,报错:
invalid conversion from 'QWidget*' to 'QwtPlotCanvas*' [-fpermissive]
对于 LisUImapplot.cpp 中的这一行
186 picker = new MyPicker( MPlot->canvas() );
可以在与 cpp 文件相同的文件夹中找到其头文件 (LisUImapplot.h) 的链接。
class MyPicker: public QwtPlotPicker
{
public:
MyPicker( QwtPlotCanvas *canvas ):
QwtPlotPicker( canvas )
{
setTrackerMode( AlwaysOn );
}
virtual QwtText trackerTextF( const QPointF &pos ) const
{
QColor bg( Qt::white );
bg.setAlpha( 100 );
QwtPlotItemList list = plot()->itemList(QwtPlotItem::Rtti_PlotSpectrogram);
QwtPlotSpectrogram * sp = static_cast<QwtPlotSpectrogram *> (list.at(1));
double z = sp->data()->value(pos.x(), pos.y());
QString txt = "";
if (z > -1e10)
txt.sprintf( "%.3f", z );
QwtText text = QwtText(txt);
text.setColor(Qt::black);
text.setBackgroundBrush( QBrush( bg ) );
return text;
}
};
我希望你能帮我解决这个问题。谢谢!
我正在使用 Qt 5.1.1 MinGW 32 位和 Qwt 6.1.0
最佳答案
QwtPlot::canvas()返回一个 QWidget
。您的 MyPicker
构造函数需要一个 QwtPlotCanvas
类型参数。
您可以将其转换为 QwtPlotCanvas
:
QwtPlotCanvas *canvas = qobject_cast<QwtPlotCanvas*>(MPlot->canvas());
if(canvas)
{
picker = new MyPicker(canvas);
...
}
关于c++ - 从 'QWidget*' 到 'QwtPlotCanvas*' [-fpermissive] 的无效转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19177394/