2011-06-20 13 views
1

Qt Designerを使用してQWizardPageを作成しています。私Qtの創造主にファイルをインポートし、それは今のところ正常に動作している(私はプロジェクトをビルドし、うまくウィザードを実行することができます)Qt Designerによって作成されたQWizardPageへのアクセス

今私はisComplete機能を再実装する必要がありますが、どのように理解することが、私ができない

それをするために。ページの名前はwizardPage{,1,2_1,_2}です。私は今、isComplete()関数を再実装する最良の方法が何であるか知りたいと思います。

+0

あなたは 'completeChanged()'シグナルを使用して処理のためにスロット(関数)に接続することはできませんか? –

答えて

2

QWizardPageisComplete()機能を過負荷にするには、QWizardPageを自分で作成する必要があります。基本的には、必要なページだけのために、フォームをレイアウトします(ダイアログのように)。そのページのクラスを作成します。このクラスは、QWizardPageから継承し、任意のチェックのためにisComplete()を再インプリメントします。今度はあなたのウィザードで、ページをどこにしたいかを見つけてください。ウィジェットをすべて削除し、右クリックしてPromote Widget...を選択します。クラス名とヘッダーファイルへのパスを入力します。コンパイルすると、そのページのクラスのインスタンスが使用されます(オーバーライドはisComplete())。

+0

つまり、すべてを再作成する必要がありますが、通常のQWizardではなくQWizardPagesとして作成する必要があります。 –

+0

@Hiemanshu Sharma:はい。しかし、ほとんどの設定でそれほど難しいことではありません。現在のウィザードと新しいページウィジェットをQt Designerの同じインスタンスで開き、ウィジェットをウィザードから切り取り、ページに貼り付けることができます。 –

+0

音が聞こえます。本当にそう多くの時間を取るべきではありません。 –

0

質問している内容が不明ですが、ウィザードの[次へ]ボタンを無効にする場合は、isComplete()からfalseを返します。

「次へ」ボタンを有効にしたい場合は、completeChanged()シグナルを出して、trueを返します。

デフォルトの実装はすでにtrueを返します。したがって、このメソッドをオーバーライドする必要はありません。

こちらがお役に立てば幸いです。

+0

はい。私はisComplete()を実装したいが、Qt Designerを使用して作成したページにどのようにアクセスするのか。 (すべてのコードは、uiファイルをコンパイルすることによって生成されたヘッダーにあります) –

関連する問題