Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: transto от Май 18, 2008, 14:59



Название: QFileDialog::getOpenFileName в делегате [4.4.0]
Отправлено: transto от Май 18, 2008, 14:59
Почему во время редактирования данных делегатом, при вызове:
Код:
QString file = QFileDialog::getOpenFileName(this, tr("Выберите файл"),"", tr("Все файлы (*.*)"));
сразу вызывается сразу setModelData понятно - потому что этот вызов делает выход из режима редактирования item'а.

Вопрос в том, как заставить этот диалог работать так же как и обычный QFileDialog->exec() ? (т.е., чтобы не делал выход из режима редактирования)

может сумбурно выражаюсь. но я в тупичке - очень хочется нативный диалог, а тут такой облом. :(
Задача проста: сделать выбор файла в ячейке таблицы по кнопке в QLineEdit. Но диалог QtFileDialog->exec() какой-то некрасивый...  Или это дело привычки? :)


Название: Re: QFileDialog::getOpenFileName в делегате [4.4.0]
Отправлено: transto от Май 18, 2008, 17:48
:) помогло добавление пустого eventFilter делегату.
Код:
bool fileDialogDelegate::eventFilter ( QObject * editor, QEvent * event )
{
return false;
}
конечно, хвала ассинтанту и интуиции...


Название: Re: QFileDialog::getOpenFileName в делегате [4.4.0]
Отправлено: transto от Июнь 11, 2008, 14:00
Не нравится мне идея с eventFilter. Для нормальной работы не хватает codeless. :) потому как потом приходится обрабатывать клавиши и т.п.

В аттаче исходники с примером работы делегата, может вы увидете то, что от меня скрыто.

Надо, чтобы путь файла все-таки попадал в ячейку таблицы.