2009-07-07 16 views
0

私はマルチフォームのRuby-Qtプログラムを使って作業していますが、プライマリウィンドウの制御に問題があります。 セカンダリウィンドウが開いているときにプライマリウィンドウを無効にする方法、セカンダリウィンドウ出力をプライマリウィンドウで使用する方法、最後に残念ですが、これは愚かなものです。 (this.close in .netのような)?Ruby with Qt

答えて

3

モーダルダイアログを作ることができます。モーダルウィンドウを閉じるまで、アプリケーションの他のウィンドウとのユーザーのやりとりを無効にします。 Qt::Dialog.showの代わりにQt::Dialog.execを使用すると、ウィンドウがモーダルダイアログとしてポップアップします。このメソッドは、ユーザーがダイアログを閉じた方法によって、Qt::Dialog::AcceptedまたはQt::Dialog::Rejectedを返します。

メインアプリケーションウィンドウのダイアログからデータを使用するには、メインプログラムがアクセスできるダイアログクラスのどこかにデータを保存します。ダイアログを使用している場合、あなたはそれが(受け入れ)または(拒否で終了する必要が

class MyDialog < Qt::Dialog 
    attr_reader :data 
[...] 
    def updateData(new) 
     @data = new 
    end 
end 

dlg = MyDialog.new(self) 
if (dlg.exec == Qt::Dialog::Accepted) 
    @aButton.text = dlg.data 
end 

)、ほとんどの場合、これらはOKに接続し、ボタンをキャンセルされています:たとえば

connect(okButton, SIGNAL('clicked()'), self, SLOT('accept()')) 
connect(cancelButton, SIGNAL('clicked()'), self, SLOT('reject()')) 

他のウィンドウはclose()メソッドで閉じることができます。