Я пытаюсь скомпилировать программу (находится здесь: 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-bit и Qwt 6.1.0
Это вполне ожидаемо, так как QWidget
не имеет такого члена. Это QFrame
член метод.
void QFrame::setFrameStyle(int style)
Обратите внимание, что средство получения холста вернет следующий тип, и не обязательно QFrame
:
QWidget * QwtPlot::canvas();
const QWidget * QwtPlot::canvas() const;
Следует проверить с помощью dynamic / qobject_cast, если возвращаемое значение на самом деле QFrame
,
Причина наличия QWidget заключается в том, что существует возможность использовать холст, производный от QGLWidget. Но до тех пор, пока вы не назначите его из своего приложения, ваш dynamic_cast (или qobject_cast) всегда будет успешным.