Название: Запутался с этими окнами Отправлено: CJ1 от Июнь 04, 2012, 08:03 Вобщем, задача такова,
Короче, сервак я уже написал Проблема с клиентам. В клиенте логика такая, включаем прогу, вылазиет диалоговое окно ввода логина и пароля, ввожу, если верно, то входу в главное окно, если не верно, то не вхожу в главное окно, а остаюсь в диалоговом. Тут все у меня работает. Теперь о проблеме. Если я в диалоговом окне нажимаю кнопку закрыть, то мне нужно чтобы главное окно закрылось тоже и программа завершилась, понимаете :) . Но я не могу понять как это сделать, на WinAPI тут проблем вообще не возникает, я бы просто сделал CloseWindow(HWND) А тут хрен пойми!!! Вобщем ща объясню код, самый логический вариант который я придумал. Вот конструктор главного окна.... Код: MainWindow::MainWindow(QWidget *parent) : Нужно сделать 2 вещи, отловить события, нажатия на красный крестик диалога, и прям в конструкторе главного окна закрыть главное окно Название: Re: Запутался с этими окнами Отправлено: maint от Июнь 04, 2012, 08:40 делаю где то так
Код: retcode = pw->exec(); Название: Re: Запутался с этими окнами Отправлено: CJ1 от Июнь 04, 2012, 08:44 Ясно, сделал чуть чуть по другому, но номально
Название: Re: Запутался с этими окнами Отправлено: CJ1 от Июнь 04, 2012, 08:51 В Qt некоторые вещи не продуманны.... Но зато намного больше приимуществ
Название: Re: Запутался с этими окнами Отправлено: sudo от Июнь 04, 2012, 10:06 Код
Это не вещи не продуманы, а просто нужно уметь готовить Название: Re: Запутался с этими окнами Отправлено: CJ1 от Июнь 04, 2012, 10:12 Ясно!
Название: Re: Запутался с этими окнами Отправлено: CJ1 от Июнь 04, 2012, 10:15 И дополнительно, тоже не понял... Где слот закрытия окна, тоесть произошел щелчек на крестике окна, произошло события, и там идет проверка, если чтото true то окно закрывается, если false то не закрывается?
Название: Re: Запутался с этими окнами Отправлено: Serr500 от Июнь 04, 2012, 10:19 Слота нет. Есть событие closeEvent, которое можно переопределить в своём диалоге. Там можно указать, закрывать окно или нет.
Название: Re: Запутался с этими окнами Отправлено: sudo от Июнь 04, 2012, 10:21 И дополнительно, тоже не понял... Где слот закрытия окна, тоесть произошел щелчек на крестике окна, произошло события, и там идет проверка, если чтото true то окно закрывается, если false то не закрывается? На крестик и Отмену в конечном итоге вызывается reject(), закрывающий окно диалога с кодом QDialog::Rejected, на Ок подвешен accept(). Это в случае с QDialogButtonBox. Если использовать свои кнопки, всё это нужно коннектить руками/в ui, кроме крестика, который будет продолжать закрывать диалог. Для переопределения крестика уже нужно перегружать closeEvent() Название: Re: Запутался с этими окнами Отправлено: CJ1 от Июнь 04, 2012, 10:23 Понятно.
Название: Re: Запутался с этими окнами Отправлено: sudo от Июнь 04, 2012, 10:27 Понятно. А как отменить закрытия? Не дать окну закрыться? Перегрузить closeEvent(), проверить там условия и, если условия не позволяют закрыть окно, вызвать ignore для события, пришедшего в closeEvent(). Если диалог стандартный типа messageBoxа какого-нибудь, можно подвесить в вызывающем коде на диалог eventHandler Код
а в отлавливающем объекте перегрузить метод QObject::eventFilter |