У меня есть QFormLayout, где левые виджеты - это QLabels, а правые виджеты - разных типов. Я хочу получать уведомления, когда мышь вводит любую часть строки формы, поэтому я могу отобразить объяснение этой строки в моей строке состояния.
В настоящее время у меня есть подкласс QLabel, называемый HoverableLabel, который предоставляет сигналы "mouseEntered" и "mouseLeft" (испускаемые в моих повторных реализациях enterEvent и leftEvent). Это работает, но:
- Поля между строками не вызывают сигналы
- Пробел слева от (выровненных по правому краю) меток не вызывает сигнал
- Виджеты справа не вызывают сигнал, потому что я не удосужился подкласс всех из них
Что такое благословенный Qt подход к такого рода проблеме?
Некоторые вещи, о которых я могу думать:
- Сделайте родительский объект formlayout виджетом, который фильтрует все события перемещения мыши (отслеживание мыши?) И проверяет, вошла ли мышь в какую-либо строку.
- Измените formlayout на QVBoxLayout и превратите строки в некоторый пользовательский виджет, например FormRowWidget, который обрабатывает как события наведения, так и элементы выравнивания формы.
Ни один не очень хороший.