Название: Два окна Отправлено: Serr500 от Мая 25, 2012, 22:15 1) Имеется два окна в приложении. Первое создаётся в функции main, второе - по нажатию кнопки в первом окне. Второе окно родителя не имеет. Требуется, чтобы по нажатию кнопки закрытия в первом окне второе вывело некий диалог с запросом пользователю. Если пользователь нажал "Да", то оба окна надо закрыть и выйти из приложения, если "Нет" - оставить всё как есть и продолжить работу. Может быть, туплю из-за позднего времени, но никак не соображу, как это реализовать. Подскажите, пожалуйста, как сделать.
2) Если у второго окна указывать родителем первое окно, то оно упорно "ползает" поверх первого, т.е первое окно не удаётся разместить поверх второго. Можно ли как-то изменить это поведение и сделать окна равноправными? Название: Re: Два окна Отправлено: kambala от Мая 25, 2012, 23:59 1) переопределить closeEvent и в зависимости от ответа пользователя вызывать event->accept() (да) или event->ignore() (нет)
Название: Re: Два окна Отправлено: Syveren от Мая 26, 2012, 10:16 Цитировать 2) Если у второго окна указывать родителем первое окно, то оно упорно "ползает" поверх первого, т.е первое окно не удаётся разместить поверх второго. Можно ли как-то изменить это поведение и сделать окна равноправными? А почему бы не использовать QDialog. Даже имея родителя, отображается отдельноНазвание: Re: Два окна Отправлено: Serr500 от Мая 26, 2012, 10:36 1) Утром дело пошло. Наверное, устал вчера. Не допёр до переопределения closeEvent, смотрел на сигналы. Требуемое поведение сделал. Если кому интересна реализация, прикрепил к сообщению простенький проект.
2) А почему бы не использовать QDialog. Даже имея родителя, отображается отдельно Второе окно у меня отображается отдельно, т.е. не внутри первого. Оно всегда поверх первого, даже если первое активно. На вложенной картинке видно, что MainWindow активно, но окно Dialog тем не менее поверх него. Если у диалога нет родителя, то такого поведения нет, но в этом случае в панели задач появляется вторая кнопка - для диалога.Название: Re: Два окна Отправлено: kambala от Мая 26, 2012, 11:58 можешь попробовать первому окну задать Qt::StayOnTopHint (поверх всех окон).
а почему такое принципиальное желание задать второму окну родителя? Название: Re: Два окна Отправлено: Serr500 от Мая 26, 2012, 12:27 можешь попробовать первому окну задать Qt::StayOnTopHint (поверх всех окон). Те же яйца, только в профиль. Оба окошка поверх всех окон, но диалог всё равно поверх главного окна.а почему такое принципиальное желание задать второму окну родителя? Да, в общем-то, не особо принципиальное... Немного портят эстетическое впечатление две кнопки в панели задач. И наличие родителя позволяет не беспокоиться об удалении - главная форма автоматически разрушит все свои дочерние объекты. И возник уже теоретический интерес, почему такое странное с моей точки зрения поведение окон и как этого избежать.Название: Re: Два окна Отправлено: LisandreL от Мая 26, 2012, 14:18 И возник уже теоретический интерес, почему такое странное с моей точки зрения поведение окон и как этого избежать. По сути в Qt нет такого понятие как «окно».Есть только виджет, который может быть компонентом на другом виджете. То есть хотите QComboBox или QLineEdit использовать как окно? Пожалуйста. Хотите встроить в своё окно QColorDialog или QPrintPreviewDialog? Не вопрос. Название: Re: Два окна Отправлено: Serr500 от Мая 27, 2012, 13:26 По сути в Qt нет такого понятие как «окно». И отсутствие понятия "окно" приводит к тому, что Название: Re: Два окна Отправлено: DmitryM от Мая 30, 2012, 10:06 По сути в Qt нет такого понятие как «окно». И отсутствие понятия "окно" приводит к тому, что Название: Re: Два окна Отправлено: Serr500 от Мая 30, 2012, 10:11 Почитайте внимательнее начало темы. move совсем не в тему.
|