2013-10-04 83 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)將會一直成功。

相關問題