2013-10-04 45 views
4

我试图按照作者说的方法编译一个程序(在这里找到:http://sourceforge.net/projects/lisem/)。然而,在Qt Creator中编译时,它给人的错误:'class QWidget'has no member named'setFrameStyle'

class QWidget has no member named setFrameStyle

对这些代码行中LisUIplot.cpp

47 HPlot = new QwtPlot(title, this); 
48 layout_Plot->insertWidget(0, HPlot, 1); 
49 HPlot->canvas()->setFrameStyle(QFrame::StyledPanel); 

142 smallPlot = new QwtPlot(title, this); 
143 smallPlot->setMinimumSize(300,300); 
144 smallPlot->resize(500,500); 
145 verticalLayout_6->insertWidget(0, smallPlot, 1); 
146 smallPlot->canvas()->setFrameStyle(QFrame::StyledPanel); 

我希望你能帮助我在这。谢谢!

顺便说一句,我使用Qt 5.1.1 MinGW的32位和QWT 6.1.0

回答

6

这是非常期望的,因为QWidget有没有这样的一个成员。这是一个QFrame成员方法。

void QFrame::setFrameStyle(int style) 

注意,在画布上的吸气将返回以下类型,不一定是QFrame

QWidget * QwtPlot::canvas(); 
const QWidget * QwtPlot::canvas() const; 

应该用动态检查/ qobject_cast如果返回值实际上是一个QFrame

3

这里有一个QWidget的原因是,有一个选项可以使用从QGLWidget派生的画布。但只要你不从你的应用程序分配它,你的dynamic_cast(或者qobject_cast)将会一直成功。

相关问题