Qtドキュメントに記載されている標準的な手順を使用して、クリックしたときにカーソルを開いた手に変更したカスタムQGraphicsItemがあります。これは過去2週間ほどうまくいった。 昨日、クラス内でいくつか変更しました。最も重要なのは、QGraphicsItemの代わりにQGraphicsPixmapItemから直接サブクラス化することです。ことはできない '&のconst QCursor' に 'Qtの:: CursorShape' から、パラメータ1の変換:不完全なタイプの原因は何ですか? (QGraphicsItem:ソースまたはターゲットに不完全な型があります)
C664:
は、いくつかの時点で私は、次のようなエラー(一部翻訳)を取得するために始めました。ソースまたはターゲットに不完全な型があります。
ここで、アイテムに不完全な型がある理由を理解しようとします。残念ながら、この問題が発生し始めたときは、私はリトレースできません。変更された基本クラスは私の唯一の推測でしたが、どうしてこれが原因である可能性があるかについては考えられませんでした。エラーを見つけた後、私はクラスのメンバーが多少定義されていないサンプルを見つけましたが、私の宣言にエラーが見つかりませんでした。だから、私は何かを逃した場合には、ここでヘッダーは、次のとおりです。このファイルが正しい場合
#include <QGraphicsPixmapItem>
class Collection;
class ItemSource;
class PhotoItem : public QGraphicsPixmapItem
{
public:
PhotoItem(QString sourceFilePath, Collection *collection =0, QColor color =Qt::white, qreal size = 80.0);
enum Orientation { portrait, landscape };
QPixmap content();
bool hasContent();
QColor color();
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
QRectF boundingRect() const;
void mousePressEvent(QGraphicsSceneMouseEvent *event);
void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event);
private:
qreal _size;
Orientation _orientation;
QPixmap _content;
QColor _color;
Collection *_collection;
ItemSource *_source;
};
を、そして私がチェックアウトすることができ、未定義の型につながる任意の一般的な問題があるのですか?たぶん私は間違った場所で検索していますか?不完全型につながるどのようなお時間を
おかげで、 ルイーズ
ヘッダの代わりに前方宣言が良いことを指摘する価値はあると思います。だから、提案された解決策は、次のようにする必要があります。エラーが発生した場所の.cppに型を宣言するヘッダーを含めます。 –
@FrankOsterfeld:私はこれをすでにチェックしたことを忘れていました。すべての前方宣言されたクラスは、実装に正当に含まれていました。今日は最小のテストケースを作成しましたが、これには前方宣言は含まれていません。私はこの質問を元の状態に戻し、あなたの答えを受け入れることにしました。それは他の人に役立つかもしれません(私はこの特定の質問が以前に答えられているので、削除することもできます)。私は最小のシナリオでこのエラーで新しい質問を追加しました[ここ](http://stackoverflow.com/questions/10122219/weird-incomplete-type-error-in-a-qqraphicsitem) – Louise
これはStyne666の解答で解決することができます。私は、この方法でそれを分割することはOKです(まだSOの新しい;))。私はあなたの一般的な答えが他の人に役立つと思っていましたが、私の特定の問題はqt固有のものでした。 – Louise