Russian Qt Forum
Февраля 24, 2025, 16:53
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Альтернативный заголовок и рамка окна
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Альтернативный заголовок и рамка окна (Прочитано 12067 раз)
QCasper
Гость
Альтернативный заголовок и рамка окна
«
:
Ноября 28, 2009, 21:23 »
Собственно сабж. Можно конечно использовать флаг Qt::FramelessWindowHint и нарисовать свои рамку и заголовок, но тогда пропадает возможность двигать окно и изменять его размер. Если перемещение еще можно худо бедно реализовать, то с ресайзом совсем проблема. Буду благодарен за любые идеи по этому поводу.
Записан
spectre71
Гость
Re: Альтернативный заголовок и рамка окна
«
Ответ #1 :
Ноября 28, 2009, 21:53 »
Цитата: QCasper от Ноября 28, 2009, 21:23
Собственно сабж. Можно конечно использовать флаг Qt::FramelessWindowHint и нарисовать свои рамку и заголовок, но тогда пропадает возможность двигать окно и изменять его размер. Если перемещение еще можно худо бедно реализовать, то с ресайзом совсем проблема. Буду благодарен за любые идеи по этому поводу.
Не уверен в том что нет режима без рамки и заголовка при котором не работает расайз, но вполне возможно, я не рассматривал все режимы.
Но поскольку ты вполне готов нарисовать свою рамку и сделать премещение окна, так что тебе мешает менять курсор на своей рамке соответствующим образом и отрабатывать Mouse: Press, Move, Release, для изменения размера окна.
Записан
zenden
Гость
Re: Альтернативный заголовок и рамка окна
«
Ответ #2 :
Ноября 28, 2009, 21:57 »
посмотри исходники к примеру мессенджера Qutim
Там они сделали окно контактов с собственной рамкой
Записан
spectre71
Гость
Re: Альтернативный заголовок и рамка окна
«
Ответ #3 :
Ноября 28, 2009, 22:00 »
Цитата: zenden от Ноября 28, 2009, 21:57
посмотри исходники к примеру мессенджера Qutim
Там они сделали окно контактов с собственной рамкой
Ну я же написал выше, почему тебе не сделать перетаквание границ самому?
Записан
sendevent
Гость
Re: Альтернативный заголовок и рамка окна
«
Ответ #4 :
Ноября 28, 2009, 22:49 »
Цитировать
Если перемещение еще можно худо бедно реализовать, то с ресайзом совсем проблема.
для ресайзинга есть замечательный класс
QSizeGrip
Записан
QCasper
Гость
Re: Альтернативный заголовок и рамка окна
«
Ответ #5 :
Ноября 28, 2009, 22:50 »
Цитата: Spectre от Ноября 28, 2009, 21:53
Но поскольку ты вполне готов нарисовать свою рамку и сделать премещение окна, так что тебе мешает менять курсор на своей рамке соответствующим образом и отрабатывать Mouse: Press, Move, Release, для изменения размера окна.
Если бы все было так просто, то я бы сюда не писал. Проблема заключается в следующем. Ресайз предполагается делать, когда мышка находится на границе окна. Граница окна это пикселя 4, не больше. А теперь представьте себе ситуацию. Пользователь помещает указатель мыши на нашу границу. Нажимает левую кнопку мыши. Здесь мы готовы делать ресайз. Но после этого он не плавно тащит мышку в сторону, а делает это рывком. В результате мышь выходит за область окна, и оно, окно, больше не обрабатывает события мыши, и в результате наше окно больше не изменяет размер.
Цитата: zenden от Ноября 28, 2009, 21:57
посмотри исходники к примеру мессенджера Qutim
Там они сделали окно контактов с собственной рамкой
С чего Вы взяли? Обычное окно там. По крайней мере в линуксе. Думаю в винде то же самое.
Записан
BRE
Гость
Re: Альтернативный заголовок и рамка окна
«
Ответ #6 :
Ноября 28, 2009, 22:53 »
Цитата: QCasper от Ноября 28, 2009, 22:50
Если бы все было так просто, то я бы сюда не писал. Проблема заключается в следующем. Ресайз предполагается делать, когда мышка находится на границе окна. Граница окна это пикселя 4, не больше. А теперь представьте себе ситуацию. Пользователь помещает указатель мыши на нашу границу. Нажимает левую кнопку мыши. Здесь мы готовы делать ресайз. Но после этого он не плавно тащит мышку в сторону, а делает это рывком. В результате мышь выходит за область окна, и оно, окно, больше не обрабатывает события мыши, и в результате наше окно больше не изменяет размер.
Посмотри на:
void QWidget::setMouseTracking ( bool enable )
Записан
QCasper
Гость
Re: Альтернативный заголовок и рамка окна
«
Ответ #7 :
Ноября 28, 2009, 22:56 »
Цитата: BRE от Ноября 28, 2009, 22:53
Посмотри на:
void QWidget::setMouseTracking ( bool enable )
И что я там должен увидеть?
Записан
BRE
Гость
Re: Альтернативный заголовок и рамка окна
«
Ответ #8 :
Ноября 28, 2009, 23:00 »
Цитата: QCasper от Ноября 28, 2009, 22:56
Цитата: BRE от Ноября 28, 2009, 22:53
Посмотри на:
void QWidget::setMouseTracking ( bool enable )
И что я там должен увидеть?
Точнее на:
void QWidget::grabMouse ()
Будешь получать все события от мыши, даже если она не находиться на виджетом, пока не сделаешь releaseMouse().
Записан
QCasper
Гость
Re: Альтернативный заголовок и рамка окна
«
Ответ #9 :
Ноября 28, 2009, 23:08 »
Цитата: BRE от Ноября 28, 2009, 23:00
Точнее на:
void QWidget::grabMouse ()
Это уже ближе. Спасибо, попробую.
Записан
spectre71
Гость
Re: Альтернативный заголовок и рамка окна
«
Ответ #10 :
Ноября 28, 2009, 23:40 »
Цитата: QCasper от Ноября 28, 2009, 22:50
Если бы все было так просто, то я бы сюда не писал. Проблема заключается в следующем. Ресайз предполагается делать, когда мышка находится на границе окна. Граница окна это пикселя 4, не больше. А теперь представьте себе ситуацию. Пользователь помещает указатель мыши на нашу границу.
Нажимает левую кнопку мыши.
Здесь мы готовы делать ресайз. Но после этого он не плавно
тащит мышку в сторону
, а делает это рывком. В результате
мышь выходит за область окна, и оно, окно, больше не обрабатывает события мыши
, и в результате наше окно больше не изменяет размер.
Обрабатываются до тех пор пока ты не отжал все кнопки мыши!
Цитата: BRE от Ноября 28, 2009, 22:53
Посмотри на:
void QWidget::setMouseTracking ( bool enable )
В этом нет необходимости. При зажатой кнопке мыши событие Mouse Move передается.
Записан
BRE
Гость
Re: Альтернативный заголовок и рамка окна
«
Ответ #11 :
Ноября 28, 2009, 23:41 »
Цитата: Spectre от Ноября 28, 2009, 23:40
В этом нет необходимости.
Да я поправился.
Цитата: Spectre от Ноября 28, 2009, 23:40
При зажатой кнопке мыши событие Mouse Move передается.
Ты уверен?
Записан
zenden
Гость
Re: Альтернативный заголовок и рамка окна
«
Ответ #12 :
Ноября 29, 2009, 02:03 »
Цитировать
С чего Вы взяли? Обычное окно там. По крайней мере в линуксе. Думаю в винде то же самое.
вид рамки зависит от скина, также можно поставить стандартную рамку
Записан
spectre71
Гость
Re: Альтернативный заголовок и рамка окна
«
Ответ #13 :
Ноября 29, 2009, 03:02 »
Цитата: zenden от Ноября 29, 2009, 02:03
Цитировать
С чего Вы взяли? Обычное окно там. По крайней мере в линуксе. Думаю в винде то же самое.
вид рамки зависит от скина, также можно поставить стандартную рамку
Вот по этому и настраивоемое скином, что вырублен стандартный заголовок и рамка. И отрисовка их самостоятельная, рисуют скинами.
Записан
spectre71
Гость
Re: Альтернативный заголовок и рамка окна
«
Ответ #14 :
Ноября 29, 2009, 03:09 »
Цитата: BRE от Ноября 28, 2009, 23:41
Цитата: Spectre от Ноября 28, 2009, 23:40
В этом нет необходимости.
Да я поправился.
Цитата: Spectre от Ноября 28, 2009, 23:40
При зажатой кнопке мыши событие Mouse Move передается.
Ты уверен?
Абсолютно.
Записан
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...