Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: gil9red от Июль 01, 2012, 20:34



Название: [РЕШЕНО] Окно без рамки - изменение размеров окна с помощью мышки
Отправлено: gil9red от Июль 01, 2012, 20:34
Здравствуйте :)
Имеется виджет с флагом Qt::FramelessWindowHint, т.е. нет у него рамки, тянув которую можно изменить размер окошка, нет также заголовка с системными кнопками (свернуть, развернуть, закрыть) с полем, благодаря которому можно перемещать окно.
Если с перемещением окна проблем нет: в помощь идут события нажатия и перемещения мыши:
Код:
    QPoint position;

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

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

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

Думаю тут нужно использовать теже события что и при перемещении окна, добавив к ним функцию resize() окна, ну и также проверять где находится указатель мышки, при нажатии оной, и если на границе окна, то... а что "то", я не знаю  ???
Помогите пожалуйста примерами :D


Название: Re: Окно без рамки - изменение размеров окна с помощью мышки
Отправлено: Igors от Июль 01, 2012, 22:08
... а что "то", я не знаю  ???
Помогите пожалуйста примерами :D
В mousePressEvent определяете насколько близко мыша к каждому краю. Если достаточно близко - запоминаете какой край тащить в mouseMoveEvent, (да, вызывая resize). Ну и.т.д.

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


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


Название: Re: Окно без рамки - изменение размеров окна с помощью мышки
Отправлено: gil9red от Июль 01, 2012, 22:49
Ну допустим, определил, а какая должна быть логика для "растягивания" окна или уменьшения??


Название: Re: Окно без рамки - изменение размеров окна с помощью мышки
Отправлено: Igors от Июль 01, 2012, 23:08
Ну допустим, определил, а какая должна быть логика для "растягивания" окна или уменьшения??
Вообще-то я неправильно делаю давая сачку списывать :) Ну да ладно, вспомнил что экспериментировал с этим, вот этот набросок (аттач). Помню там пара ошибок, ну это и хорошо


Название: Re: Окно без рамки - изменение размеров окна с помощью мышки
Отправлено: gil9red от Июль 01, 2012, 23:23
Придется поразбираться :)
Спасибо за пример :)
Правда почему то кажется что в нем есть лишний код...