Название: Альтернативный заголовок и рамка окна Отправлено: QCasper от Ноябрь 28, 2009, 21:23 Собственно сабж. Можно конечно использовать флаг Qt::FramelessWindowHint и нарисовать свои рамку и заголовок, но тогда пропадает возможность двигать окно и изменять его размер. Если перемещение еще можно худо бедно реализовать, то с ресайзом совсем проблема. Буду благодарен за любые идеи по этому поводу.
Название: Re: Альтернативный заголовок и рамка окна Отправлено: spectre71 от Ноябрь 28, 2009, 21:53 Собственно сабж. Можно конечно использовать флаг Qt::FramelessWindowHint и нарисовать свои рамку и заголовок, но тогда пропадает возможность двигать окно и изменять его размер. Если перемещение еще можно худо бедно реализовать, то с ресайзом совсем проблема. Буду благодарен за любые идеи по этому поводу. Не уверен в том что нет режима без рамки и заголовка при котором не работает расайз, но вполне возможно, я не рассматривал все режимы. Но поскольку ты вполне готов нарисовать свою рамку и сделать премещение окна, так что тебе мешает менять курсор на своей рамке соответствующим образом и отрабатывать Mouse: Press, Move, Release, для изменения размера окна. Название: Re: Альтернативный заголовок и рамка окна Отправлено: zenden от Ноябрь 28, 2009, 21:57 посмотри исходники к примеру мессенджера Qutim
Там они сделали окно контактов с собственной рамкой Название: Re: Альтернативный заголовок и рамка окна Отправлено: spectre71 от Ноябрь 28, 2009, 22:00 посмотри исходники к примеру мессенджера Qutim Там они сделали окно контактов с собственной рамкой Ну я же написал выше, почему тебе не сделать перетаквание границ самому? Название: Re: Альтернативный заголовок и рамка окна Отправлено: sendevent от Ноябрь 28, 2009, 22:49 Цитировать Если перемещение еще можно худо бедно реализовать, то с ресайзом совсем проблема. для ресайзинга есть замечательный класс QSizeGrip (http://qt.nokia.com/doc/4.5/qsizegrip.html)Название: Re: Альтернативный заголовок и рамка окна Отправлено: QCasper от Ноябрь 28, 2009, 22:50 Но поскольку ты вполне готов нарисовать свою рамку и сделать премещение окна, так что тебе мешает менять курсор на своей рамке соответствующим образом и отрабатывать Mouse: Press, Move, Release, для изменения размера окна. Если бы все было так просто, то я бы сюда не писал. Проблема заключается в следующем. Ресайз предполагается делать, когда мышка находится на границе окна. Граница окна это пикселя 4, не больше. А теперь представьте себе ситуацию. Пользователь помещает указатель мыши на нашу границу. Нажимает левую кнопку мыши. Здесь мы готовы делать ресайз. Но после этого он не плавно тащит мышку в сторону, а делает это рывком. В результате мышь выходит за область окна, и оно, окно, больше не обрабатывает события мыши, и в результате наше окно больше не изменяет размер. посмотри исходники к примеру мессенджера Qutim Там они сделали окно контактов с собственной рамкой С чего Вы взяли? Обычное окно там. По крайней мере в линуксе. Думаю в винде то же самое. Название: Re: Альтернативный заголовок и рамка окна Отправлено: BRE от Ноябрь 28, 2009, 22:53 Если бы все было так просто, то я бы сюда не писал. Проблема заключается в следующем. Ресайз предполагается делать, когда мышка находится на границе окна. Граница окна это пикселя 4, не больше. А теперь представьте себе ситуацию. Пользователь помещает указатель мыши на нашу границу. Нажимает левую кнопку мыши. Здесь мы готовы делать ресайз. Но после этого он не плавно тащит мышку в сторону, а делает это рывком. В результате мышь выходит за область окна, и оно, окно, больше не обрабатывает события мыши, и в результате наше окно больше не изменяет размер. Посмотри на:void QWidget::setMouseTracking ( bool enable ) Название: Re: Альтернативный заголовок и рамка окна Отправлено: QCasper от Ноябрь 28, 2009, 22:56 Посмотри на: void QWidget::setMouseTracking ( bool enable ) И что я там должен увидеть? Название: Re: Альтернативный заголовок и рамка окна Отправлено: BRE от Ноябрь 28, 2009, 23:00 Посмотри на: void QWidget::setMouseTracking ( bool enable ) И что я там должен увидеть? void QWidget::grabMouse () Будешь получать все события от мыши, даже если она не находиться на виджетом, пока не сделаешь releaseMouse(). Название: Re: Альтернативный заголовок и рамка окна Отправлено: QCasper от Ноябрь 28, 2009, 23:08 Точнее на: void QWidget::grabMouse () Это уже ближе. Спасибо, попробую. Название: Re: Альтернативный заголовок и рамка окна Отправлено: spectre71 от Ноябрь 28, 2009, 23:40 Если бы все было так просто, то я бы сюда не писал. Проблема заключается в следующем. Ресайз предполагается делать, когда мышка находится на границе окна. Граница окна это пикселя 4, не больше. А теперь представьте себе ситуацию. Пользователь помещает указатель мыши на нашу границу.Нажимает левую кнопку мыши. Здесь мы готовы делать ресайз. Но после этого он не плавно тащит мышку в сторону, а делает это рывком. В результате мышь выходит за область окна, и оно, окно, больше не обрабатывает события мыши, и в результате наше окно больше не изменяет размер. Обрабатываются до тех пор пока ты не отжал все кнопки мыши! Посмотри на: void QWidget::setMouseTracking ( bool enable ) В этом нет необходимости. При зажатой кнопке мыши событие Mouse Move передается. Название: Re: Альтернативный заголовок и рамка окна Отправлено: BRE от Ноябрь 28, 2009, 23:41 В этом нет необходимости. Да я поправился.При зажатой кнопке мыши событие Mouse Move передается. Ты уверен? ;)Название: Re: Альтернативный заголовок и рамка окна Отправлено: zenden от Ноябрь 29, 2009, 02:03 Цитировать С чего Вы взяли? Обычное окно там. По крайней мере в линуксе. Думаю в винде то же самое. (http://www.qutim.org/uploads/styles/season_preview.png) вид рамки зависит от скина, также можно поставить стандартную рамку Название: Re: Альтернативный заголовок и рамка окна Отправлено: spectre71 от Ноябрь 29, 2009, 03:02 Цитировать С чего Вы взяли? Обычное окно там. По крайней мере в линуксе. Думаю в винде то же самое. (http://www.qutim.org/uploads/styles/season_preview.png) вид рамки зависит от скина, также можно поставить стандартную рамку Вот по этому и настраивоемое скином, что вырублен стандартный заголовок и рамка. И отрисовка их самостоятельная, рисуют скинами. Название: Re: Альтернативный заголовок и рамка окна Отправлено: spectre71 от Ноябрь 29, 2009, 03:09 В этом нет необходимости. Да я поправился.При зажатой кнопке мыши событие Mouse Move передается. Ты уверен? ;)Абсолютно. ;) Название: Re: Альтернативный заголовок и рамка окна Отправлено: QCasper от Ноябрь 29, 2009, 12:24 Обрабатываются до тех пор пока ты не отжал все кнопки мыши! Не знаю, у меня не обрабатываются. Попробуйте сами, и покажите код. Название: Re: Альтернативный заголовок и рамка окна Отправлено: spectre71 от Ноябрь 29, 2009, 12:43 Обрабатываются до тех пор пока ты не отжал все кнопки мыши! Не знаю, у меня не обрабатываются. Попробуйте сами, и покажите код. Сделай компилябильный тест, ничего лишнего, только Отслеживание Mouse Move, и выложи сюда. Обязательно под QT Creator с pro-файлом! Название: Re: Альтернативный заголовок и рамка окна Отправлено: QCasper от Ноябрь 29, 2009, 13:16 Обрабатываются до тех пор пока ты не отжал все кнопки мыши! Да, в простейшем тесте, действительно так и есть. Попробую найти причину в основной программе. |