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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Окно без рамки и события от мыши  (Прочитано 12297 раз)
Геннадий Пастухов
Гость
« : Ноябрь 15, 2009, 23:18 »

Что-то я не совсем понимаю. В хэлпе написано, что при выставлении флага Qt::FramelessWindowHint приложение не даст пользователю переместить себя или изменить размеры. А что же делать, если мне нужна главная форма собственного вида, без рамки, заголовка, но чтобы оно нормально перемещалось и можно было менять размеры окна?
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #1 : Ноябрь 15, 2009, 23:37 »

В хэлпе написано, что при выставлении флага Qt::FramelessWindowHint приложение не даст пользователю переместить себя или изменить размеры

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

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

это и так можно
Записан
Геннадий Пастухов
Гость
« Ответ #2 : Ноябрь 15, 2009, 23:59 »

В хэлпе написано, что при выставлении флага Qt::FramelessWindowHint приложение не даст пользователю переместить себя или изменить размеры

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

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

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

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

Это как так?
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #3 : Ноябрь 16, 2009, 00:22 »

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

многие оконные менеджеры позволяют двигать окна через Alt+мышь. Плюс я так думаю у тебя должны быть свои заголовок и бордюр, как в Crystal Player.
Записан
Геннадий Пастухов
Гость
« Ответ #4 : Ноябрь 16, 2009, 15:16 »

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

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

Мне не надо через Alt, мне нужно как обычно. Заголовка и бордюра нет, пустая форма с моими виджетами.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #5 : Ноябрь 16, 2009, 15:29 »

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

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

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Ноябрь 16, 2009, 15:43 »

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

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

Я не совсем понимаю, что же тут нестандартного, ведь такой режим предусмотрен. И как иначе я могу сделать окно без стандартного заголовка и стандартного бордюра?
Записан
Павел_F.
Гость
« Ответ #8 : Ноябрь 16, 2009, 16:15 »

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

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

Аааа. А тогда нет ли штатного способа оставить бордюр и шапку и сделать их размером 0?
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #10 : Ноябрь 16, 2009, 18:54 »

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

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

нет, фрейм окна подразумевает бордюры и заголовок, либо всё, либо ничего
Записан
SASA
Гость
« Ответ #11 : Ноябрь 16, 2009, 19:07 »

нет, фрейм окна подразумевает бордюры и заголовок, либо всё, либо ничего
Выставив окну правильные флаги (setWindowFlags) можно, что бы был бордю но не было заголовка.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #12 : Ноябрь 16, 2009, 19:52 »

Выставив окну правильные флаги (setWindowFlags) можно, что бы был бордю но не было заголовка.

например?
Записан
SASA
Гость
« Ответ #13 : Ноябрь 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();
}
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #14 : Ноябрь 17, 2009, 20:38 »

main.cpp

не работает:
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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