5

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

4

2 回答 2

6

这是完全可以预料的,因为QWidget没有这样的成员。那是一个QFrame成员方法。

void QFrame::setFrameStyle(int style)

请注意,画布 getter 将返回以下类型,不一定是 a QFrame

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

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

于 2013-10-04T05:13:24.910 回答
3

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

于 2013-10-04T14:42:29.597 回答