2009-05-13 4 views
0

私は単純なQtアプリケーションを作っています。これは、4画面/ページがあります。リニアGUIプログラムの設計方法

  1. スタートは
  2. に画像をインポートする
  3. 選択フォルダをインポート受け入れるか拒否する各画像をフォルダに、そして何の画像が残っていないとき:
  4. 「何の画像が残っていない」とOKボタン。

私はこれを実装する最良の方法を理解できません。私はQWidgetを使い始めましたが、すぐに管理できなくなりました。

QWizardに制約がありますか?

編集:QWizardの問題の一部は、常に「戻る」と「次へ」ボタンがあるようです。私はこのプログラムのオプションとしてそれらを望んでいないので、これはウィザードが私が何をしているのか正確には信じられません。

+0

なぜ戻るボタンがないのですか?画面1で画像を忘れてしまったことが画面2でわかったらどうなりますか?ウィザードを終了してやり直す必要がありますか? – jmucchiello

+0

私は完全にはっきりしていなかった - 私は少し質問を変更しました。ユーザーが画像を受け入れるか拒否するたびに、受け入れられたフォルダまたは拒否されたフォルダにコピーされた後、画像がインポートされるデバイスから削除されます。 「戻る」は意味をなさない。ユーザーはすべてのイメージを受け入れるか、または拒否する必要があるので、前方も意味をなさない。 – Skilldrick

答えて

5

こちらでは、QWizardを使用して少し不一致になります。これはかなり簡単ですが、この場合はQStackedWidgetを使用して、ユーザーが望むものに基づいて表示されたウィジェットを交換する方が簡単かもしれないと思います。これは、ボタンを実行したり前後に移動したりするための複雑さを伴わずに、とにかくQWizardの内部で行われる可能性が高いです。また、あなたがすぐに追加しようとしているステートマシンの内容を見てみることもできます。これは、アプリケーションを簡単に状態に分割できるためです。

+0

これは私が思っていたより多くのものだと思います - 私はQWizardがそれをやっていた方法を理解できませんでしたが、今見ています! – Skilldrick

1

here(基本)およびhereがQWizardの例です。

QWizardPagesを画面に作成し、QWizardに追加することができます。 registerField()を使用すると、フィールドを登録してページ間で通信することができます。

EDIT: 私はこれをテストしていないが、私はあなたが setButtonLayout

5

でQWizardのボタンレイアウトを制御することができますね私はQWizardPageが最善の策だと思います。

QWizardPageで「戻る」を無効にするには、setCommitPage(True)を使用します。

また、上部の「インポート開始」ボタンでダイアログを作成するには、手順2と4

+0

@ダウンダウン者:説明する気に? – ChristopheD

0

の間でほしいQWizardPagesの「変数」量についてnextIdを上書きする必要があります。ユーザーがこれをクリックすると:

QFormLayoutを移入:

レイアウトをチェックボックスとラベルをインポートする画像の名前である必要があります。私はあなたの要件についてはわかりませんが、画像のサムネイルを表示することもできます。

ユーザは、自分が望む画像をチェックするだけです。

次に、下部に[保存...]ボタンがあります。ユーザーがこれをクリックすると、[名前を付けて保存]ダイアログが表示されます。チェックした画像をすべて保存し、他の画像は破棄します。

画像がない場合は、[保存...]ボタンのテキストを「OK」に変更し、「画像が残っていません」という文字列でQLabelと表示します。 QStackedWidgetを使用してQLabelQFormLayoutの間で切り替えることができます。

チェックアウトQFormLayoutこの記事:http://doc.trolltech.com/qq/qq25-formlayout.html

オプション: "インポート開始" ボタンを取り除きます。起動時にQFormLayoutを自動的に読み込むようにしてください(おそらくコンストラクタが十分速い場合)。

関連する問題