Название: Ожидание ответа от формы Отправлено: Digan от Август 21, 2011, 18:30 Есть две формы. При определенных событий на первой появляется диалог - вторая форма на которой две кнопки.
В классе второй формы я добавил один атрибут и один метод: Код
Атрибуту deleteFile в конструкторе формы присвоено: Код
Слоты кнопок: Код
Метод isSelectDelete() Код
Как сделать так, чтобы первая форма ожидала клика на одну из кнопок второй формы? И как первой форме узнать именно на какую кнопку кликнул пользователь во второй? Вот так не получается: Код
т.к. deleteDial->isSelectDelete() возвращает false. Как сделать, что обработчик ожидал ответа от формы, а не выполнялся дальше? Название: Re: Ожидание ответа от формы Отправлено: Mikhail от Август 21, 2011, 18:39 Соедини сигналы clicked() кнопок со слотом первой формы.
В слоте вызови sender() и получишь указатель на кнопку. А вообще то желательно читать кники по Qt и Assistant. Такие вопросы задаются в разделе Вопросы новичков Название: Re: Ожидание ответа от формы Отправлено: Digan от Август 21, 2011, 20:08 Я смотрел Бланшет, но те примеры мне не помогли или я не там смотрел.
У меня только пока такой вариант: Код
Он он не работает. Название: Re: Ожидание ответа от формы Отправлено: LisandreL от Август 21, 2011, 20:12 Он он не работает. Разумеется deleteDial->on_pushButton_clicked() - это слот, а не сигнал.Название: Re: Ожидание ответа от формы Отправлено: Etud от Август 21, 2011, 20:28 ...именно поэтому нужно добавить сигнал сюда:
Код
-и не забудь добавить в заголовок my.h; -и не забудь связать нужный сигнал с нужным слотом. з.ы. 1) можно и без sender(), всего 2 кнопки со своими сигналами; 2) можно почитать у Шлее про сигналы-слоты. Название: Re: Ожидание ответа от формы Отправлено: Рома от Август 21, 2011, 22:11 А может, еслина в диалоговом окне только 2 кнопки, то пусть при нажатии на 1-ю кнопку в диалоге вызывается слот accept() , а при нажатии на вторую reject(). Ну, а в основной форме проверять результат ф-и exec().
Примерно так: В конструкторе диалога: Код: connect(on_pushButton,SIGNAL(clicked()),this,SLOT(accept())); А в основной форме: Код: DeleteDialog* deleteDial = new DeleteDialog(); И вместо коментариев просто написать нужный код Название: Re: Ожидание ответа от формы Отправлено: Digan от Август 21, 2011, 23:49 А может, еслина в диалоговом окне только 2 кнопки, то пусть при нажатии на 1-ю кнопку в диалоге вызывается слот accept() , а при нажатии на вторую reject(). Ну, а в основной форме проверять результат ф-и exec(). Примерно так: В конструкторе диалога: Код: connect(on_pushButton,SIGNAL(clicked()),this,SLOT(accept())); А в основной форме: Код: DeleteDialog* deleteDial = new DeleteDialog(); И вместо коментариев просто написать нужный код Спасибо. Это действительно работает. И всем остальным спасибо, хотя я так и не смог понять ваши предложения. Придется еще разбираться в механизме сигналов и слотов. |