crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Исчезание панели меню в полноэкранном режиме, Как в Media Player Classic
QMainWindow
  опции профиля:
сообщение 4.8.2011, 13:57
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 198
Регистрация: 1.8.2010
Пользователь №: 1922

Спасибо сказали: 0 раз(а)




Репутация:   0  


Доброго времени суток!
Интересует, как сделать исчезающую панель меню в полноэкранном режиме? Как пример - плеер Media Player Classic. Когда входим в полноэкранный режим, панелька снизу исчезает. При этом, если мышь приблизить к нижнему краю экрана, то панель появляется и остается активной, если в фокусе мыши. А когда уводим мышь прочь, снова исчезает.
Для начала попробовал использовать метод setVisible(), hide(), setEnabled(), но после такого вот исчезновения перестают работать горячие клавиши (например выход из полноэкранного режима - клавиша Esc).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 4.8.2011, 14:56
Сообщение #2


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


На главном окне (видео) отлавливаете MouseMoveEvent. И есть он например входит в область 200пикс. снизу, то:
if (panel->isHide())
panel->show();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
QMainWindow
  опции профиля:
сообщение 4.8.2011, 16:39
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 198
Регистрация: 1.8.2010
Пользователь №: 1922

Спасибо сказали: 0 раз(а)




Репутация:   0  


А если я буду использовать для скрытия панели метод hide(), то не будут работать горячие клавиши. Вот сейчас вошел в режим, панель скрылась, дальше хочу вызвать диалог Открыть, нажимаю ctrl + O, и ничего не происходит.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 4.8.2011, 17:03
Сообщение #4


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

Спасибо сказали: 45 раз(а)




Репутация:   3  


Можно просто сдвигать за пределы видимости (например в отрицательные координаты) или делать виджет прозрачным (свойство opacity кажется).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 4.8.2011, 17:12
Сообщение #5


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


А почему это при скрытии панели пропадут хоткеи?
Или у вас хоткеи на самой панели?
Сдвигать в минус - именно оно. Так s/umplayer делает.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
QMainWindow
  опции профиля:
сообщение 4.8.2011, 17:17
Сообщение #6


Участник
**

Группа: Участник
Сообщений: 198
Регистрация: 1.8.2010
Пользователь №: 1922

Спасибо сказали: 0 раз(а)




Репутация:   0  


Хоткеи делал в дизайнере.
В минус? попробую.
А акой вопрос: отлов мыша чем делается? mouseMoveEvent() и setMouseTracking() что-то не помогают... В Г.О. сделал метод mouseMoveEvent(), в нем же сделал setMouseTracking(true). Или не так?

А, понял, что не так. Отображается, только если во время движения зажата ЛКМ. А как без нее?

Сообщение отредактировал QMainWindow - 4.8.2011, 17:19
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 4.8.2011, 18:03
Сообщение #7


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

Спасибо сказали: 45 раз(а)




Репутация:   3  


Что такое Г.О.?
Если бы вы показали код было бы немного проще. По идее setMouseTracking(true) как раз и служит для того что бы отлавливать движение мыши даже если не нажата никакая клавиша.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 4.8.2011, 18:13
Сообщение #8


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


В хедере главного окна:
protected:
  void mouseMoveEvent(QMouseEvent *);

В сорусе определяем как:
void MainWindow::mouseMoveEvent(QMouseEvent *e)
{
  qDebug()<<e->pos();
}

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
QMainWindow
  опции профиля:
сообщение 4.8.2011, 19:30
Сообщение #9


Участник
**

Группа: Участник
Сообщений: 198
Регистрация: 1.8.2010
Пользователь №: 1922

Спасибо сказали: 0 раз(а)




Репутация:   0  


Да, уже разобрался, видать что-то перепутал...
Г.О. == Главное Окно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
QMainWindow
  опции профиля:
сообщение 4.8.2011, 23:53
Сообщение #10


Участник
**

Группа: Участник
Сообщений: 198
Регистрация: 1.8.2010
Пользователь №: 1922

Спасибо сказали: 0 раз(а)




Репутация:   0  


Получилось! Только не прятал, а менял raise()/lower().
ОФФТОП: что работает быстрее - if(!e->y()) или if(e->y() == 0)?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.3.2024, 16:48