2009-07-07 4 views
0

Я работаю над программой Ruby-Qt с несколькими формами, и у меня возникла проблема с управлением дополнительными окнами из основного. Как я могу отключить основное окно, когда открыт какой-либо вторичный, а также как получить вторичный вывод окна, чтобы использовать его на основном, и, наконец, извините, это глупо, что является подходящим методом для закрытия любого окна (вроде this.close in .net) ????Ruby with Qt

ответ

3

Вы можете сделать диалог модальным, это отключит взаимодействие пользователя с другими окнами вашего приложения, пока пользователь не закроет модальное окно. Используйте Qt::Dialog.exec вместо Qt::Dialog.show, чтобы открыть окно в виде модального диалога. Этот метод возвращает 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 

Если вы используете диалоговое окно, вам нужно выйти из него с принять() или отклонить(), в большинстве случаев они связаны с ОК и кнопку Отмена:

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

Другие окна могут быть закрыты методом close().