Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Геннадий Пастухов от Ноябрь 15, 2009, 23:18



Название: Окно без рамки и события от мыши
Отправлено: Геннадий Пастухов от Ноябрь 15, 2009, 23:18
Что-то я не совсем понимаю. В хэлпе написано, что при выставлении флага Qt::FramelessWindowHint приложение не даст пользователю переместить себя или изменить размеры. А что же делать, если мне нужна главная форма собственного вида, без рамки, заголовка, но чтобы оно нормально перемещалось и можно было менять размеры окна?


Название: Re: Окно без рамки и события от мыши
Отправлено: Alex Custov от Ноябрь 15, 2009, 23:37
В хэлпе написано, что при выставлении флага Qt::FramelessWindowHint приложение не даст пользователю переместить себя или изменить размеры

Обычным методом - с помощью таскания за заголовок и растягивание за бордюры.

Цитировать
А что же делать, если мне нужна главная форма собственного вида, без рамки, заголовка, но чтобы оно нормально перемещалось и можно было менять размеры окна?

это и так можно


Название: Re: Окно без рамки и события от мыши
Отправлено: Геннадий Пастухов от Ноябрь 15, 2009, 23:59
В хэлпе написано, что при выставлении флага Qt::FramelessWindowHint приложение не даст пользователю переместить себя или изменить размеры

Обычным методом - с помощью таскания за заголовок и растягивание за бордюры.

А можно пояснить новичку - если нет заголовка и бордюров, за что хвататься мышью?

Цитировать
А что же делать, если мне нужна главная форма собственного вида, без рамки, заголовка, но чтобы оно нормально перемещалось и можно было менять размеры окна?

это и так можно

Это как так?


Название: Re: Окно без рамки и события от мыши
Отправлено: Alex Custov от Ноябрь 16, 2009, 00:22
Цитировать
А можно пояснить новичку - если нет заголовка и бордюров, за что хвататься мышью?

многие оконные менеджеры позволяют двигать окна через Alt+мышь. Плюс я так думаю у тебя должны быть свои заголовок и бордюр, как в Crystal Player.


Название: Re: Окно без рамки и события от мыши
Отправлено: Геннадий Пастухов от Ноябрь 16, 2009, 15:16
Цитировать
А можно пояснить новичку - если нет заголовка и бордюров, за что хвататься мышью?

многие оконные менеджеры позволяют двигать окна через Alt+мышь. Плюс я так думаю у тебя должны быть свои заголовок и бордюр, как в Crystal Player.

Мне не надо через Alt, мне нужно как обычно. Заголовка и бордюра нет, пустая форма с моими виджетами.


Название: Re: Окно без рамки и события от мыши
Отправлено: Alex Custov от Ноябрь 16, 2009, 15:29
Мне не надо через Alt, мне нужно как обычно. Заголовка и бордюра нет, пустая форма с моими виджетами.

тогда никак


Название: Re: Окно без рамки и события от мыши
Отправлено: Igors от Ноябрь 16, 2009, 15:43
если мне нужна главная форма собственного вида, без рамки, заголовка, но чтобы оно нормально перемещалось и можно было менять размеры окна?
Без заголовка - но можно таскать. Без рамки - но можно менять размеры. Нестандартный подход, за что же пользователю надо хвататься чтобы таскать и менять размер? И как он об этом догадается? Можно перекрыть события мыши и делать самому move/resize - это не страшно но зачем?


Название: Re: Окно без рамки и события от мыши
Отправлено: Геннадий Пастухов от Ноябрь 16, 2009, 16:10
если мне нужна главная форма собственного вида, без рамки, заголовка, но чтобы оно нормально перемещалось и можно было менять размеры окна?
Без заголовка - но можно таскать. Без рамки - но можно менять размеры. Нестандартный подход, за что же пользователю надо хвататься чтобы таскать и менять размер? И как он об этом догадается? Можно перекрыть события мыши и делать самому move/resize - это не страшно но зачем?

Я не совсем понимаю, что же тут нестандартного, ведь такой режим предусмотрен. И как иначе я могу сделать окно без стандартного заголовка и стандартного бордюра?


Название: Re: Окно без рамки и события от мыши
Отправлено: Павел_F. от Ноябрь 16, 2009, 16:15
Такой режим предусмотрен для специфических вещей типа сплешскрина. Их ни двигать, ни изменять размеры никто не собирается. А то что нужно вам... Переопределите события мыши и пишитесвои обработчики для всех движений изменений курсора и прочего, нет проблем.


Название: Re: Окно без рамки и события от мыши
Отправлено: Геннадий Пастухов от Ноябрь 16, 2009, 16:47
Такой режим предусмотрен для специфических вещей типа сплешскрина. Их ни двигать, ни изменять размеры никто не собирается. А то что нужно вам... Переопределите события мыши и пишитесвои обработчики для всех движений изменений курсора и прочего, нет проблем.

Аааа. А тогда нет ли штатного способа оставить бордюр и шапку и сделать их размером 0?


Название: Re: Окно без рамки и события от мыши
Отправлено: Alex Custov от Ноябрь 16, 2009, 18:54
Такой режим предусмотрен для специфических вещей типа сплешскрина. Их ни двигать, ни изменять размеры никто не собирается. А то что нужно вам... Переопределите события мыши и пишитесвои обработчики для всех движений изменений курсора и прочего, нет проблем.

Аааа. А тогда нет ли штатного способа оставить бордюр и шапку и сделать их размером 0?

нет, фрейм окна подразумевает бордюры и заголовок, либо всё, либо ничего


Название: Re: Окно без рамки и события от мыши
Отправлено: SASA от Ноябрь 16, 2009, 19:07
нет, фрейм окна подразумевает бордюры и заголовок, либо всё, либо ничего
Выставив окну правильные флаги (setWindowFlags) можно, что бы был бордю но не было заголовка.


Название: Re: Окно без рамки и события от мыши
Отправлено: Alex Custov от Ноябрь 16, 2009, 19:52
Выставив окну правильные флаги (setWindowFlags) можно, что бы был бордю но не было заголовка.

например?


Название: Re: Окно без рамки и события от мыши
Отправлено: SASA от Ноябрь 17, 2009, 20:03
main.cpp

Код:
#include <QtGui/QApplication>
#include <QtGui/QMainWindow>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QMainWindow w;
QFlags<Qt::WindowType> resultFlag(w.windowFlags());
resultFlag &=~(Qt::WindowTitleHint|Qt::WindowSystemMenuHint|Qt::WindowMaximizeButtonHint|Qt::WindowMinimizeButtonHint|Qt::FramelessWindowHint);
resultFlag |= Qt::CustomizeWindowHint;
w.setWindowFlags(resultFlag);
w.show();
return a.exec();
}


Название: Re: Окно без рамки и события от мыши
Отправлено: Alex Custov от Ноябрь 17, 2009, 20:38
main.cpp

не работает: