У класса QWidget нет члена с именем setFrameStyle

Я пытаюсь скомпилировать программу (находится здесь: 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

5

Решение

Это вполне ожидаемо, так как QWidget не имеет такого члена. Это QFrame член метод.

void QFrame::setFrameStyle(int style)

Обратите внимание, что средство получения холста вернет следующий тип, и не обязательно QFrame:

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

Следует проверить с помощью dynamic / qobject_cast, если возвращаемое значение на самом деле QFrame,

6

Другие решения

Причина наличия QWidget заключается в том, что существует возможность использовать холст, производный от QGLWidget. Но до тех пор, пока вы не назначите его из своего приложения, ваш dynamic_cast (или qobject_cast) всегда будет успешным.

3

По вопросам рекламы [email protected]