Название: [РЕШЕНО]Крах приложения QStyledItemDelegate вызыват QFileDialog::getOpenFileName Отправлено: burevestnik от Апрель 25, 2013, 14:43 Есть такой виджет:
Код: class MyLineFileEdit : public MyLineEdit в методе setOpenFileName() вызываю QFileDialog::getOpenFileName. Если в диалоге выбрать файл и нажать ок или cancel, то все нормально. Однако, если при открытом диалоге щелкнуть мышью по ДРУГОМУ приложению то КРАХ. Сам по себе виджет на форме, т.е. без делегата эту ситуацию отрабатывает нормально, я могу что-то делать в других приложениях, а потом вернуться в диалог и завершить начатое. Но в случае с делегатом так не получается. Что не так? Название: Re: Крах приложения QStyledItemDelegate вызывает QFileDialog::getOpenFileName Отправлено: GreatSnake от Апрель 25, 2013, 15:10 Однако, если при открытом диалоге щелкнуть мышью по ДРУГОМУ приложению то КРАХ. В этом случае делегат теряет фокус и экземпляр MyLineFileEdit уничтожается.Название: Re: Крах приложения QStyledItemDelegate вызывает QFileDialog::getOpenFileName Отправлено: burevestnik от Апрель 25, 2013, 15:22 Т.е. в любом случае будет вызван деструктор? значит что-то нужно написать в деструкторе? не соображу.
Название: Re: Крах приложения QStyledItemDelegate вызывает QFileDialog::getOpenFileName Отправлено: GreatSnake от Апрель 25, 2013, 15:58 Можно в перегруженном QStyledItemDelegate::eventFilter() игнорировать QEvent::FocusOut для такого случая.
Название: Re: Крах приложения QStyledItemDelegate вызывает QFileDialog::getOpenFileName Отправлено: burevestnik от Апрель 25, 2013, 16:18 Цитировать Можно в перегруженном QStyledItemDelegate::eventFilter() игнорировать QEvent::FocusOut для такого случая. помогло) спасибо. Код: bool MyLineFileEditDelegate::eventFilter ( QObject * editor, QEvent * event ) Название: Re: Крах приложения QStyledItemDelegate вызывает QFileDialog::getOpenFileName Отправлено: burevestnik от Апрель 25, 2013, 16:26 Цитировать Можно в перегруженном QStyledItemDelegate::eventFilter() игнорировать QEvent::FocusOut для такого случая. еще лучше так: Код: bool MyLineFileEditDelegate::eventFilter ( QObject * editor, QEvent * event ) |