Russian Qt Forum

Qt => Вопросы новичков => Тема начата: helga1917 от Август 22, 2013, 12:25



Название: Как убрать крестик закрытия окна?
Отправлено: helga1917 от Август 22, 2013, 12:25
Здравствуйте, нужно убрать крестик с окна и оставить только сворачивание/разворачивание.
Я нашла только, как его можно сделать не активным. А можно ли совсем убрать этот крестик?
 
Код:
window.setWindowFlags (Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::WindowMinMaxButtonHint);


Название: Re: Как убрать крестик закрытия окна?
Отправлено: gil9red от Август 22, 2013, 12:55
можно вообще лишить окна рамки и самому нарисовать ее :)
а там уж сами решите, что оставить из системных кнопок, а что из своих добавить )


Название: Re: Как убрать крестик закрытия окна?
Отправлено: helga1917 от Август 22, 2013, 13:02
хорошо, а какими средствами ее рисовать?


Название: Re: Как убрать крестик закрытия окна?
Отправлено: GreatSnake от Август 22, 2013, 16:28
Здравствуйте, нужно убрать крестик с окна и оставить только .
Окно диалога всегда должно иметь этот "крестик".
Если вам требуется его убрать, значит имеются какие-то проблемы с логикой.
Также по-хорошему, диалогу не стоит позволять "сворачивание/разворачивание".


Название: Re: Как убрать крестик закрытия окна?
Отправлено: gil9red от Август 22, 2013, 18:17
хорошо, а какими средствами ее рисовать?
Для этого всегда убираем рамку окна
убрав рамку, не сможете перетаскивать окно и менять его размер, а также пропадут системные кнопки: свернуть, развернуть и закрыть, поэтому придется самому переопределять нужные события (paintEvent, mouseMoveEvent, mousePressEvent, mouseReleaseEvent)
paintEvent - для отрисовки (он не обязателен, если вы оставите окно, если полностью окно убрать, придется рисовать его самой или маску накладывать)
mouseMoveEvent, mousePressEvent, mouseReleaseEvent: перемещение и изменение размера окна

Если вы еще не передумали (какая вы упрямая :D), то посмотрите на форуме или погуглите -подобных тем куча! ;)


Название: Re: Как убрать крестик закрытия окна?
Отправлено: helga1917 от Август 23, 2013, 07:48
 благодарю, желание этим заниматься поубавилось, надеюсь не придется


Название: Re: Как убрать крестик закрытия окна?
Отправлено: deMax от Август 23, 2013, 08:26
убрать достаточно просто, скопировал из примера (Qt::WindowSystemMenuHint - помоему не нужно)
Код:
ShapedClock::ShapedClock(QWidget *parent)
     : QWidget(parent, Qt::FramelessWindowHint | Qt::WindowSystemMenuHint)
это актуально когда вам жалко тратить свободное место монитора, на элементы не несущие полезную информацию.