2012-01-31 8 views

答えて

5

私はQtのソースを見て、それがカスタムボタンのレイアウトを作成し、リスト内のボタンを戻るommitingことにより、ボタンを戻る非表示にすることも可能だということを発見しました:

QList<QWizard::WizardButton> button_layout; 
    button_layout << QWizard::HelpButton << QWizard::Stretch << 
        QWizard::NextButton << QWizard::CustomButton1 << 
        QWizard::CancelButton; 
    this->setButtonLayout(button_layout); 

が、私はこれが誰かにいくつかの時間を節約することを願っています。

P.S.

AFAIU QWizardのソースコードを修正するために必要とされるQTimerを使用しないようにします。簡単な方法は仮想関数を追加することです 仮想void buttonsUpdated(); QWizardの最後からそれを呼び出します。 void QWizardPrivate :: _ q_updateButtonStates() 次に、QWizardサブリストでこのボタンUpdated()を再実装し、そこに戻るボタンを無効にします。

+0

あなたはそれを自分でチェックしなかった 'QWizrad ::ボタン(WizardButtonいる)const'でいつでもQWizard ::戻るボタンを取ると、表示/非いつでも –

+2

でそれを無効にすることができますか?私は4.7.4でそれをチェックし、それは単純では機能しませんでした – Dmitriy

4

(PyQt4に)私のために働いた

QWizard::onCurrentIdChanged(int) 

QWizard::button(QWizard::BackButton).hide() 

を呼び出します。

これは、効果的にすべてのウィザードページにもう一度戻るボタンを非表示になりますが、それは所望の効果を達成します。

0

代替(多分より多くのフレームワークが重視)の方法は、ページをコミットするように、あなたは戻るボタンがで無効にすることにしたいページの前に来るQWizardPageを設定することです。 QWizardPageでthis.setCommitPage(true)を呼び出すだけで、次のページでは、戻るボタンを有効にすることはできません。

commitPageがtrueの場合、コミットページであることを、ボイドQWizardPage :: setCommitPage(ブール値commitPage)設定このページ

QWizardPage documentationから。それ以外の場合は、 通常ページに設定します。コミットページは、戻るまたはキャンセルをクリックして が元に戻せないアクションを表すページです。コミット・ボタンの を「コミット」ボタンに置​​き換えます。このボタンをクリックすると、単に「次へ」をクリックするのと同じようにQWizard :: next()が呼び出されます。 コミットページから直接入力されたページには、その[戻る]ボタンが無効になっています。 isCommitPage()も参照してください。

すべての戻るボタンを無効にする場合は、すべてのページで呼び出すことができます。

関連する問題