Russian Qt Forum
Май 02, 2024, 11:12 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Окно без рамки - изменение размеров окна с помощью мышки  (Прочитано 7284 раз)
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« : Июль 01, 2012, 20:34 »

Здравствуйте Улыбающийся
Имеется виджет с флагом Qt::FramelessWindowHint, т.е. нет у него рамки, тянув которую можно изменить размер окошка, нет также заголовка с системными кнопками (свернуть, развернуть, закрыть) с полем, благодаря которому можно перемещать окно.
Если с перемещением окна проблем нет: в помощь идут события нажатия и перемещения мыши:
Код:
    QPoint position;

    void mousePressEvent(QMouseEvent *event)
    {
     position = event->pos();
    }

    void mouseMoveEvent(QMouseEvent *event)
    {
     move(event->globalPos() - position);
    }
};

то как программно сделать так чтобы у такого "укороченного" окна можно было изменить размер потянув за его края? Улыбающийся

Думаю тут нужно использовать теже события что и при перемещении окна, добавив к ним функцию resize() окна, ну и также проверять где находится указатель мышки, при нажатии оной, и если на границе окна, то... а что "то", я не знаю  Непонимающий
Помогите пожалуйста примерами Веселый
« Последнее редактирование: Ноябрь 11, 2012, 20:29 от gil9red » Записан

Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Июль 01, 2012, 22:08 »

... а что "то", я не знаю  Непонимающий
Помогите пожалуйста примерами Веселый
В mousePressEvent определяете насколько близко мыша к каждому краю. Если достаточно близко - запоминаете какой край тащить в mouseMoveEvent, (да, вызывая resize). Ну и.т.д.

Не верится что Вы там чего-то не знали, и Ваша позиция непонятна. Зачем убирать стандартный фрейм если нет желания написать неск десятков строк простого кода?
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #2 : Июль 01, 2012, 22:46 »

Насчет убирания рамки, это потому что буду создавать программу, условие которой требуется нарисовать самому окошко=)
А окно при этом не должно быть ущербным)
« Последнее редактирование: Июль 01, 2012, 22:47 от gil9red » Записан

gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #3 : Июль 01, 2012, 22:49 »

Ну допустим, определил, а какая должна быть логика для "растягивания" окна или уменьшения??
Записан

Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Июль 01, 2012, 23:08 »

Ну допустим, определил, а какая должна быть логика для "растягивания" окна или уменьшения??
Вообще-то я неправильно делаю давая сачку списывать Улыбающийся Ну да ладно, вспомнил что экспериментировал с этим, вот этот набросок (аттач). Помню там пара ошибок, ну это и хорошо
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #5 : Июль 01, 2012, 23:23 »

Придется поразбираться Улыбающийся
Спасибо за пример Улыбающийся
Правда почему то кажется что в нем есть лишний код...
Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.052 секунд. Запросов: 23.