Название: Получить результат от QFileDialog, когда он использован в качестве делегата . Отправлено: Kunashir от Июня 01, 2011, 16:35 День добрый!
Собственно когда использую QFileDialog в качестве делегата, то вроде все хорошо, но при обработке завершения редактирования result () всегда возвращает ноль - не смотря какую кнопку нажали в диалоге. Код: CChoicePathDelegate::CChoicePathDelegate (QObject *parent) Название: Re: Получить результат от QFileDialog, когда он использован в качестве делегата . Отправлено: GreatSnake от Июня 01, 2011, 17:58 Всё потому, что тролли не предполагали, что в качестве редактора ячейки будет использоваться диалог.
У них всё заточено на то, что редактор располагается на вью. И, имхо, правильно делают, т.к. совершенно не очевидно, что по двойному нажатию на ячейку должен появиться диалог. Мало того, на не линуксе диалог всегда будет ненативный и будет прятаться если вью потеряет фокус. Для таких целей обычно делают редактор вида [______][..]. А теперь почему fileDialog->result() всегда равен 0. Дело в том, setModelData() вызывается сразу при потере фокуса или при закрытии редактора, а установка результата в диалоге уже после того как отработает закрытие, т.е. уже после setModelData(). Если хотите оставить использовать диалог в качестве редактора, то нужно отнаследоваться от QFileDialog и перегрузить done( int r ): Код
Название: Re: Получить результат от QFileDialog, когда он использован в качестве делегата . Отправлено: Kunashir от Июня 03, 2011, 13:22 Для таких целей обычно делают редактор вида [______][..]. Спасибо за совет. Сделал свой делегат с кнопочкой все теперь работает как надо! |