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

'class QWidget' has no member named 'setFrameStyle'

本文关键字:setFrameStyle 成员 class QWidget      更新时间:2023-10-16

我正在尝试按照作者所说的说明编译一个程序(在这里找到: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);

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

顺便说一句,我正在使用Qt 5.1.1 MinGW 32位和Qwt 6.1.0

这是

意料之中的,因为QWidget没有这样的成员。这是一种QFrame成员方法。

void QFrame::setFrameStyle(int style)

请注意,画布获取器将返回以下类型,不一定是QFrame

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

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

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