Я пытаюсь создать приложение в Qt / C ++ с Qt4.5 и хочу, чтобы все активные окна меняли непрозрачность при наведении курсора мыши ...
Насколько я понимаю, в Qt нет явного события наведения мыши.
Однако, я получил элементарное функционирование, переопределив mousemoveevent () QWidget в классе, который объявляет мое главное окно. Но mousemoveevent главного окна не вызывается всякий раз, когда мышь перемещается по любому из групповых блоков, которые я там создал (понятно, так как QGroupbox имеет свое собственное переопределение mousemoveevent).
Так что в качестве дешевого обходного пути я все еще использую mousemoveevent моего главного окна, но запрашиваю глобальную позицию мыши и основываюсь на (x, y) позиции главного окна (полученной через -> pos ()) и Размер окна (-> size -> rHeight и rWidth), я проверяю, находится ли мышь в пределах области основного окна, и изменяю таким образом прозрачность.
Это имело очень ограниченный успех. Правая граница работает нормально, левая изменяет непрозрачность на 4 пикселя раньше. Верхняя часть не работает (предположительно, потому что мышь проходит через строку меню и строку заголовка), а нижняя часть меняется слишком рано.
Я подумал о создании пустого контейнера класса QWidget, а затем разместил там все остальное, но я чувствовал, что он все равно не решит большую проблему базового виджета, не получающего mousemoveevent, если он уже был реализован в дочернем элементе. виджет.
Пожалуйста, предложите любые исправления / ошибки, которые я сделал в моем методе или любые альтернативные методы для достижения этой цели.
p.s. Я сомневаюсь, что это важно, но я работаю с Qt Creator IDE, а не с интеграцией Qt в VS2008 (в любом случае, это одни и те же классы - другой компилятор, mingw )