Russian Qt Forum

Qt => Qt-инструментарий => Тема начата: heiheshang от Январь 14, 2010, 15:39



Название: Как определить что виджет плагина закрылся.
Отправлено: heiheshang от Январь 14, 2010, 15:39
Написал свой плагин для редактирования текста, теперь мне при закрытии виджета надо текст записать, а вот определить что виджет закрывается не могу. При нажатии на кнопку закрытия генерится событии hideEvent, но это событие генерится каждый раз когда виджет закрывается другим. Как определить что виджет закрывается ?


Название: Re: Как определить что виджет плагина закрылся.
Отправлено: ilot от Январь 14, 2010, 16:22
А что за виджет (от какого класса наследован)? и чем он закрывается?


Название: Re: Как определить что виджет плагина закрылся.
Отправлено: heiheshang от Январь 14, 2010, 16:37
А что за виджет (от какого класса наследован)? и чем он закрывается?
От QMainWindow наследован.


Название: Re: Как определить что виджет плагина закрылся.
Отправлено: BlackTass от Январь 14, 2010, 16:44
closeEvent, не?


Название: Re: Как определить что виджет плагина закрылся.
Отправлено: heiheshang от Январь 14, 2010, 16:46
closeEvent, не?
Не, не катит.


Название: Re: Как определить что виджет плагина закрылся.
Отправлено: ilot от Январь 14, 2010, 16:58
Тогда не очень понятно, что собственно вы хотите получить, потому как судя по вашему вопросу и описанию к QCloseEvent, метод void QWidget::closeEvent ( QCloseEvent * event ) как раз то, что надо:
Цитировать
Close events are sent to widgets that the user wants to close, usually by choosing "Close" from the window menu, or by clicking the X title bar button. They are also sent when you call QWidget::close() to close a widget programmatically.
может просто вы его как то не правильно использовали?

P.S. или вопрос яснее формулируйте...


Название: Re: Как определить что виджет плагина закрылся.
Отправлено: heiheshang от Январь 14, 2010, 18:10
Тогда не очень понятно, что собственно вы хотите получить, потому как судя по вашему вопросу и описанию к QCloseEvent, метод void QWidget::closeEvent ( QCloseEvent * event ) как раз то, что надо:
Цитировать
Close events are sent to widgets that the user wants to close, usually by choosing "Close" from the window menu, or by clicking the X title bar button. They are also sent when you call QWidget::close() to close a widget programmatically.
может просто вы его как то не правильно использовали?

P.S. или вопрос яснее формулируйте...
Вы просто невнимательно читали. Я же говорю что генерится событие не closeEvent а hideEvent. Причем это событие генерируется когда текущий виджет становится неактивным. Всем виджетам в стопке рассылается событие hideEvent. Нажатие на крестик в верхнем правом углу окна виджета не приводит к закрытию виджета плагина, а всего лишь его скрывает. Я так понял, если кто лучше разобрался в работе плагинов qtcreator поправте меня.


Название: Re: Как определить что виджет плагина закрылся.
Отправлено: heiheshang от Январь 17, 2010, 06:02
Отвечу сам себе.
У класса EditorManager есть событие editorsClosed(QList<Core::IEditor*>)
Код:
Core::IEditor* editor = manager->openEditorWithContents("Field Editor", &cfgName,"");
connect(manager,SIGNAL(editorsClosed(QList<Core::IEditor*>)),editor->widget(),SLOT(updateMD(QList<Core::IEditor*>)));
Тогда не очень понятно, что собственно вы хотите получить, потому как судя по вашему вопросу и описанию к QCloseEvent, метод void QWidget::closeEvent ( QCloseEvent * event ) как раз то, что надо:
Цитировать
Close events are sent to widgets that the user wants to close, usually by choosing "Close" from the window menu, or by clicking the X title bar button. They are also sent when you call QWidget::close() to close a widget programmatically.
может просто вы его как то не правильно использовали?

P.S. или вопрос яснее формулируйте...
Вы просто невнимательно читали. Я же говорю что генерится событие не closeEvent а hideEvent. Причем это событие генерируется когда текущий виджет становится неактивным. Всем виджетам в стопке рассылается событие hideEvent. Нажатие на крестик в верхнем правом углу окна виджета не приводит к закрытию виджета плагина, а всего лишь его скрывает. Я так понял, если кто лучше разобрался в работе плагинов qtcreator поправте меня.


Название: Re: Как определить что виджет плагина закрылся.
Отправлено: SABROG от Январь 20, 2010, 22:42
А как ваш виджет-плагин будет работать в QtDesigner'e и интеграторах для Eclipse и MSVC? Там ведь нет этого события.


Название: Re: Как определить что виджет плагина закрылся.
Отправлено: crackedmind от Январь 21, 2010, 09:58
Дак это ж плагин редактирования для креатора. Причем тут дизайнер?