2

私は、ステート マシンやウィザードのような事前定義された構造に基本的に従うプロジェクトに取り組んでいます。QWizard に出くわしました。その nextId() 関数は、ウィザードがさらにページを動的にロードするための良い方法のようです。ここで、以前にアクセスしたウィザードのページに戻ると非常に便利です。しかし、オーバーロードされた nextId() を使用しても、既にアクセスしたページに戻ることはできません。

アクセスしたページの履歴を消去することはできますか? または、これを行うより良い方法はありますか?

私は Python で PyQt4 による Qt を使用していますが、それだけの違いがあるはずです。私が求めていることを行う別の方法は、ウィザードに同様のページを追加し、以前のデータをこのページと共有することですが、ほとんどが C++ から来ているため、オリジナルを模倣するダミー オブジェクトを作成する方法は好きではありません。

編集: 私がやろうとしているのは、QWizard を使用してステート マシンを複製することです (ほとんどステート マシンであるため)。たとえば、ページ 1 でデータがロードされ、ページ 2 で追加の計算が行われ、ページ 1 のデータが拡張される可能性があります。戻るボタンを使用するとページ 1 に戻ることができますが、この時点で既にページ 1 にアクセスしているため、次のボタンで「戻る」ことはできません。nextId() 関数をオーバーロードして試しましたが、うまくいきません。これは、私がしたいページの循環的な順序を構築できないことを意味します。

4

2 に答える 2

1

過去にも同様の要件がありました。ライセンスとキャリブレーションC++を必要とするアプリケーションを開発していましたが、以前にアクセスしたページ/ID に切り替えるための規定がないことがわかりました。QWizardHardware DeviceQWizard

で回避策を思いつきましたC++。ただし、簡単に移植できますpythonこちらのドキュメントにpyqtは、メソッドsetStartIdとが含まれていることが示されていますrestart。それらを使用して、 でロジックを実装できますpython

LicenseWizard::LicenseWizard(QWidget *parent)
    : QWizard(parent)
{
    setPage(Page_Intro, new IntroPage);
    setPage(Page_Evaluate, new EvaluatePage);
    setPage(Page_Register, new RegisterPage);
    setPage(Page_Details, new DetailsPage);
    setPage(Page_Conclusion, new ConclusionPage);

    setStartId(Page_Intro);

#ifndef Q_WS_MAC
    setWizardStyle(ModernStyle);
#endif
    setOption(HaveHelpButton, true);
    setPixmap(QWizard::LogoPixmap, QPixmap(":/images/logo.png"));

    connect(this, SIGNAL(helpRequested()), this, SLOT(showHelp()));
    QAbstractButton *b = this->button(QWizard::BackButton);
    connect(b, SIGNAL(clicked()), this, SLOT(goToSecondPage()));

    setWindowTitle(tr("License Wizard"));
}

void LicenseWizard::goToSecondPage()
{
    setStartId(Page_Evaluate);
    restart();
}
于 2017-10-06T12:47:45.597 に答える
0

ここであなたが尋ねているさまざまな質問の間に論理的なつながりがあるかどうかはわかりません. すでにアクセスしたページに戻りたい場合、なぜ履歴を削除したいのですか?

または separateのnextIDいずれかのメソッドをオーバーロードすることで、必要なカスタムの訪問順序を簡単に実装できます。メソッドを使用して、一部のページが既にアクセスされているかどうかを調べます。訪問されたページの ID のリストを、ページが訪問された順序で返します。QWizardQWizardPagehasVisitedPagevisitedPages

他に何か要りますか?

于 2011-04-26T09:56:48.943 に答える