1

ここでFredが示すように、カスタムQGraphicsItemボタンを作成しようとしています。彼が投稿したコードはここにあります。

問題は、コードをコンパイルしようとすると、次の2つのエラーが発生することです。

  • /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

これらのエラーは、ボタンオブジェクトをコピーしようとしているように見えます。QObject(ボタンベース)のコピーコンストラクターはプライベートであるため、コンパイラーはMyButtonコピーコンストラクターを自動的に生成しようとして失敗します。リストしたエラーに加えて、次のようなものも表示されます。

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 に答える