Qt と複数ドキュメント インターフェイスを使用したサンプル アプリケーションがあります。メイン ウィンドウでは、ユーザーがこのアクションをアクティブにするとすぐに、現在のドキュメントを保存するアクションなど、メニュー バーに追加されたアクションがあります。ドキュメントを保存するように指示する必要があるドキュメント クラスがあります。残念ながら、現在のドキュメントは変更される可能性があります (複数のドキュメント インターフェイスです)。そのため、シグナル スロット メカニズムを使用するのは簡単ではありません。どのドキュメント インスタンスに信号を接続すればよいかわかりません。
ここでのサンプル アプリケーションは、信号をメイン ウィンドウのダミー スロットに接続し、このスロットは、現在のドキュメントをクエリしてそのインスタンスの対応するメソッドを呼び出すことにより、ドキュメント クラスのそれぞれのメソッドにリクエストをリダイレクトします。これにより、多くのボイラープレート コードが発生します。
この問題を解決するよりエレガントな方法はありますか?
問題をより明確にするためのコード行を次に示します。
メインウィンドウ:
connect( action, SIGNAL( activated() ), this, SLOT( onSaveFile() ));
void MainWindow::onSaveFile()
{
getCurrentDocument()->save();
}
書類:
void Document::save()
{
...
}
どうもありがとうございました!
さようなら、ベンジャミン