2011-12-07 6 views
0

例えば、QSpinBoxを16進表示用にカスタマイズする予定です。私はインターネット上のいくつかの例を見つけ、自分のバージョンで自分自身を試しました。私は似たようなリンカーエラーを得るたびに。私はQT専門家だので、私はここで誰かが助けることができる願っています:カスタムQSpinBox - >コンパイル不可

エラー:

ここ
1>CustomSpinBox.obj : error LNK2001: unresolved external symbol "public: virtual int __thiscall CustomSpinBox::qt_metacall(enum QMetaObject::Call,int,void * *)" ([email protected]@@[email protected]@@[email protected]) 
1>CustomSpinBox.obj : error LNK2001: unresolved external symbol "public: virtual void * __thiscall CustomSpinBox::qt_metacast(char const *)" ([email protected]@@[email protected]) 
1>CustomSpinBox.obj : error LNK2001: unresolved external symbol "public: virtual struct QMetaObject const * __thiscall CustomSpinBox::metaObject(void)const " ([email protected]@@[email protected]@XZ) 

は、私が見つけたサンプルコードです。

https://bitbucket.org/megazig/megagecko/src/c20ec5e7003c/src/qhexspinbox.h

https://bitbucket.org/megazig/megagecko/src/c20ec5e7003c/src/qhexspinbox.cpp

私のバージョンは少し簡単です。私はQT Designerのプロモーション機能で統合したいこのCustomSpinBoxクラスを持っています。問題は私もこのクラスをコンパイルできません...助けてください...

私はVisual C++ 2010でQT 4.7.4を使用していますが、これらのエラーはVisual Studioから来ています。

+0

PS:新しいCustomSpinBox.hをmocする必要がありますか? – fpdragon

答えて

1

クラス定義をmocする必要がありますが、自動的に行われる必要があります。 qmakeを使用してプロジェクトをコンパイルしていますか?あなたのクラスの定義は* .hファイルですか?この* .hファイルは、プロジェクトファイルのHEADERSリストに追加されていますか?

また、プロパティ、メタオブジェクトを使用したり、クラスに新しいシグナル/スロットを追加したりしない場合は、クラス定義からQ_OBJECTを削除するだけで済みます。

+0

ありがとうございます!私はちょうど私の.hファイルからQ_OBJECTを削除し、今は動作します。これがどれほど重要かはわかりませんが、今私はこの解決策に満足しています;) – fpdragon

1

ファイルにQ_OBJECTマクロを含めるようにしてから、qmakeをプロジェクトで実行して、moc -edコンテンツが生成されるようにしてください。

関連する問題