Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Исчезание панели меню в полноэкранном режиме
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt GUI
QMainWindow
Доброго времени суток!
Интересует, как сделать исчезающую панель меню в полноэкранном режиме? Как пример - плеер Media Player Classic. Когда входим в полноэкранный режим, панелька снизу исчезает. При этом, если мышь приблизить к нижнему краю экрана, то панель появляется и остается активной, если в фокусе мыши. А когда уводим мышь прочь, снова исчезает.
Для начала попробовал использовать метод setVisible(), hide(), setEnabled(), но после такого вот исчезновения перестают работать горячие клавиши (например выход из полноэкранного режима - клавиша Esc).
RazrFalcon
На главном окне (видео) отлавливаете MouseMoveEvent. И есть он например входит в область 200пикс. снизу, то:
if (panel->isHide())
panel->show();
QMainWindow
А если я буду использовать для скрытия панели метод hide(), то не будут работать горячие клавиши. Вот сейчас вошел в режим, панель скрылась, дальше хочу вызвать диалог Открыть, нажимаю ctrl + O, и ничего не происходит.
ilyabvt
Можно просто сдвигать за пределы видимости (например в отрицательные координаты) или делать виджет прозрачным (свойство opacity кажется).
RazrFalcon
А почему это при скрытии панели пропадут хоткеи?
Или у вас хоткеи на самой панели?
Сдвигать в минус - именно оно. Так s/umplayer делает.
QMainWindow
Хоткеи делал в дизайнере.
В минус? попробую.
А акой вопрос: отлов мыша чем делается? mouseMoveEvent() и setMouseTracking() что-то не помогают... В Г.О. сделал метод mouseMoveEvent(), в нем же сделал setMouseTracking(true). Или не так?

А, понял, что не так. Отображается, только если во время движения зажата ЛКМ. А как без нее?
ilyabvt
Что такое Г.О.?
Если бы вы показали код было бы немного проще. По идее setMouseTracking(true) как раз и служит для того что бы отлавливать движение мыши даже если не нажата никакая клавиша.
RazrFalcon
В хедере главного окна:
protected:
  void mouseMoveEvent(QMouseEvent *);

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

QMainWindow
Да, уже разобрался, видать что-то перепутал...
Г.О. == Главное Окно.
QMainWindow
Получилось! Только не прятал, а менял raise()/lower().
ОФФТОП: что работает быстрее - if(!e->y()) или if(e->y() == 0)?
Алексей1153
QMainWindow, работает одинаково, пиши так, как понятнее с первого взгляда
Litkevich Yuriy
Цитата(QMainWindow @ 4.8.2011, 16:57) *
но после такого вот исчезновения перестают работать горячие клавиши (например выход из полноэкранного режима - клавиша Esc).
делай их на окно программы или виджет, который всегда виден
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.