2012-02-29 34 views
0

私のプログラムの周りに(qtを使って)インターフェイスを書こうとしています。基本的に私はメインウィンドウを持っていて、ある時点で "ユーザーにインタラクションを求める"べきです。 - 私はこのためのダイアログを使用しています。QTのサブウィンドウを管理する

ダイアログウィンドウについて読むと、ダイアログウィンドウには常に親ウィンドウ(私が推測するメインウィンドウ)があるはずです。今私は私のプロジェクトに実装するのが面倒だと思っています。変更したくないコードを変更する必要があるようです。

基本的にメインプログラムはコマンドラインインターフェイスでした。また、ユーザーとのやりとりのために、プログラムは単にユーザーの操作である&を表示するクラスを作成します。 GUIバージョンでは、そのクラスから派生し、派生クラスは正しいダイアログウィンドウを単にラップします。

問題は、コマンドラインインターフェイスでは、「ウィンドウ」や「qt」について話題がないことです。 - バックボーンアプリケーションはqtの何も知らないはずです。通信は、単純にこのようなものです:

MAIN_WINDOW -> tells backbone to start acting upon X 
    -> BACKBONE -> asks for UI (opens class with DIALOG). 

今悩みがある:私はDIALOGへ(QTの何も知らない)BACKBONEを通じてMAIN_WINDOWポインタを得るのですか?これはMAIN_WINDOWにシングルトン/グローバル変数を使用する必要がある場合ですか?より良いパラダイムがあることを願っていますか?

答えて

0

QApplication::instance()->activeWindow()でダイアログのアプリケーションのメインウィンドウを得ることができます。intance()はQApplicationオブジェクト(実際にはシングルトンとして実装されています)にアクセスすることなく呼び出すことができる静的関数です。

http://developer.qt.nokia.com/doc/qt-4.8/qapplication.html#activeWindow

関連する問題