1

我正在尝试创建一个自定义 QGraphicsItem 按钮,如 Fred所示。他发布的代码可以在这里找到。

问题是当我尝试编译代码时出现以下两个错误:

  • /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);
....
}

有趣的是,此处显示的另一个示例工作正常。可以在这里找到示例代码。

知道有什么问题吗?提前致谢。

4

1 回答 1

1

这些错误看起来像是试图复制按钮对象。编译器尝试自动生成 MyButton 复制构造函数并失败,因为 QObject (这是您的按钮库)的复制构造函数是私有的。除了您列出的错误之外,您还应该看到以下内容:

note: synthesized method 'MyButton::MyButton(const MyButton&)' first required here

此消息后带有源文件名和行号。如果您没有看到此消息,请尝试添加:

private:
    Q_DISABLE_COPY(MyButton)

到 MyButton 类定义。然后你应该看到这个:

error: 'MyButton::MyButton(const MyButton&)' is private within this context
于 2010-04-20T22:37:45.570 回答