Я пытаюсь создать пользовательскую кнопку QGraphicsItem, как показано Fred here. Код, который он опубликовал, можно найти here.Пользовательские QGraphicsItems не компилируются и дают ошибку «объект является приватным»
Проблема заключается в том, когда я пытаюсь скомпилировать код, я получаю следующие две ошибки:
- /usr/include/qt4/QtGui/qgraphicsitem.h «QGraphicsItem :: QGraphicsItem (Const QGraphicsItem &)»является частным
- /usr/include/qt4/QtCore/qobject.h
'QObject :: QObject (Const QObject &)' является частная
Вот фрагмент кода, который по существу такой же, как в приведенном выше примере. Ошибка при торможении класса.
class MyButton : public QObject, public QGraphicsItem
{
Q_OBJECT
Q_INTERFACES(QGraphicsItem)
public:
MyButton(QGraphicsItem *parent = 0);
MyButton(const QString normal, const QString pressed = "", QGraphicsItem *parent = 0);
....
}
Интересно, что другой образец, как показано на рисунке here, отлично работает. Пример кода для этого можно найти here.
Любая идея, что не так? Заранее спасибо.
У меня другая ошибка - «button.h: 31: Ошибка: Неопределенный интерфейс». Я использую Qt 4.5.2. Требуется ли 4.6? – Troubadour
@Troubadour, я использую v4.5.0, а второй образец, как я указал, работает. Поэтому он должен работать на v4.5.2. Конечно, учитывая, что я получаю эту ошибку, не уверен, если я буду советоваться об этом. :) – bahree
Спасибо. Другой образец, и даже другие из того же места, все строят отлично для меня. Возможно, разница в версии Qt является причиной различной ошибки. Боюсь, я не знаю, почему возникает ошибка, хотя пример действительно строит, если вы удаляете макрос Q_INTERFACES по строке 31. Является ли это хорошей идеей или нет, конечно ...;) – Troubadour