'class QWidget'没有名为'setFrameStyle'的成员

时间:2013-10-04 04:58:49

标签: c++ qt qwidget qwt qtgui

我正在尝试按照作者所说的编写程序(在此处找到http://sourceforge.net/projects/lisem/)。但是,在Qt Creator中编译时,会出现错误:

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);

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

BTW,我使用的是Qt 5.1.1 MinGW 32位和Qwt 6.1.0

2 个答案:

答案 0 :(得分:6)

由于QWidget没有这样的成员,所以非常期待这一点。这是QFrame成员方法。

void QFrame::setFrameStyle(int style)

注意,canvas getter将返回以下类型,而不一定是QFrame

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

如果返回的值实际上是QFrame,则应使用dynamic / qobject_cast进行检查。

答案 1 :(得分:3)

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