1

アニメーション GIF をプログラムに入れようとしています。

ただし、適切な構文に従うと

QMovie *hit1=new QMovie("BadExplosion.gif");
QLabel *processLabel=new QLabel(this);
processLabel->setMovie(hit1);
hit1->start();

の中に

void TestApp::draw()
{
//this code and other drawing code here
}

エラーが発生しました

エラー C2664: 'QLabel::QLabel(QWidget *, Qt::WindowFlags)': 行のパラメーター 1 を 'TestApp *const' から 'QWidget *' に変換できません

QLabel *processLabel=new QLabel(this);

何か案は?ありがとう!

編集: TestApp はカスタム クラスです。

4

1 に答える 1

1

がカスタム クラスの場合TestApp、このコードが機能しないのは完全に正常です。

Qt のすべての UI 要素は、構築時にQWidget親として機能するパラメーターを取ることができます。この親は特に、その子の削除を処理する責任を負います。詳細については、Qt ドキュメント (特に のドキュメントQWidget constructor) を参照してください。

あなたの場合、thisQLabel コンストラクターに渡すべきではありません。このQLabel親になる別のウィジェットを渡す必要があります。

コンパイラは、受け取ったメッセージでこの問題を明確に示しています。を待ちQWidgetますが、代わりにクラスを取得します(QWidgetどの時点でも継承しません)。

于 2014-07-17T15:52:51.847 に答える