QtPluginに深刻な問題があります。私は辞書という名前のインターフェイスからプラグインを、構築しよう:QTプラグインのコンパイルの問題
class dictionary
{
private:
... some private members
public:
~dictionary();
... some no virtual methods
virtual void collectData()=0;
virtual void collectOperator()=0;
virtual void collectControl()=0;
};
QT_BEGIN_NAMESPACE
Q_DECLARE_INTERFACE(CDictionnary, "shinoe.cameleon.dictionary/2.0")
QT_END_NAMESPACE
私はblankdictionaryプロジェクトでは、この(blankdictionary.h)のように宣言blankdictionaryクラスで辞書を実装しています。
.PROファイル:
!include(../../../configuration.pri)
QT += core gui
TARGET = blanktarget
TEMPLATE = lib
CONFIG += plugin
#dictionary interface includes
!include(../../../machine/kernel/includekernel.pri)
SOURCES += blankdictionary.cpp
HEADERS += blankdictionary.h
blankdictionary.hファイル:コンパイル時
QT_BEGIN_NAMESPACE
Q_EXPORT_PLUGIN2(blanktarget, blankdictionary)
QT_END_NAMESPACE
:
class blankdictionary : public dictionary {
Q_OBJECT
Q_INTERFACES(dictionary)
public:
blankdictionary();
void collectData();
void collectOperator();
void collectControl();
};
私が持っている私のblankdictionary.cppファイルの終わりにこのエラーを返します。
blankdictionary.cpp: In function 'QObject* qt_plugin_instance()':
blankdictionary.cpp:20: error: no match for 'operator=' in '_instance = (operator new(44u), (<statement>, ((blankdictionary*)<anonymous>)))'
c:\QtSDK\Desktop\Qt\4.7.4\mingw\include/QtCore/qpointer.h:65: note: candidates are: QPointer<T>& QPointer<T>::operator=(const QPointer<T>&) [with T = QObject]
c:\QtSDK\Desktop\Qt\4.7.4\mingw\include/QtCore/qpointer.h:67: note: QPointer<T>& QPointer<T>::operator=(T*) [with T = QObject]
ありがとうございます!
私は問題はここから来ていると思う:次の手順を実行し、プラグインを介してアプリケーションの拡張性を作る[...] 」: インターフェース(唯一の純粋仮想関数を持つクラス)のセットを定義するには、プラグインとの通信に使用しました。[...] " このソースから:http://doc.qt.nokia.com/4.7-snapshot/plugins-howto.html。 私は、純粋な仮想関数だけで辞書インターフェイスをクラスにしなければならないと思います。 私は今それを試してください。 – ocds