Я хочу создать свой собственный виджет, который расширяет QFrame, однако, когда я пытаюсь сделать конструктор, я получаю сообщение об ошибке.Расширение QFrame в пользовательском классе
#ifndef CONTROLFRAME_H
#define CONTROLFRAME_H
#include <QObject>
#include <QFrame>
#include <QWidget>
#include <QtGui>
class ControlFrame : public QFrame
{
Q_OBJECT
public:
ControlFrame(QWidget *parent = 0);
~ControlFrame();
private:
QWidget *m_parent;
};
#endif // CONTROLFRAME_H
и CPP
#include "controlframe.h"
ControlFrame::ControlFrame(QWidget *parent)
: QFrame(parent)
{
m_parent = parent;
}
ControlFrame::~ControlFrame()
{
}
К сожалению, я получаю следующее сообщение об ошибке
Undefined symbols for architecture x86_64:
"vtable for ControlFrame", referenced from:
ControlFrame::ControlFrame(QWidget*) in controlframe.o
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [PFEtest.app/Contents/MacOS/PFEtest] Error 1
18:54:21: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project PFEtest (kit: Desktop Qt 5.4.0 clang 64bit)
When executing step "Make"
Что я делаю неправильно?
Какую систему сборки вы используете? Вы добавили пропуск MOC в компиляцию? –
@MatteoItalia Я использую новейший Qt Creator для Mac OS X Yosemite, по умолчанию устанавливаем последнюю версию Qt. Помимо этого я понятия не имею, о чем вы просите (прошу простить мое незнание) – dominicbri7
Попробуйте построить чистую и перезагрузив qmake из меню «Построение». – phyatt