Qt: Как получить уведомление, когда строка находится в QFormLayout? - PullRequest
4 голосов
/ 25 сентября 2010

У меня есть QFormLayout, где левые виджеты - это QLabels, а правые виджеты - разных типов. Я хочу получать уведомления, когда мышь вводит любую часть строки формы, поэтому я могу отобразить объяснение этой строки в моей строке состояния.

В настоящее время у меня есть подкласс QLabel, называемый HoverableLabel, который предоставляет сигналы "mouseEntered" и "mouseLeft" (испускаемые в моих повторных реализациях enterEvent и leftEvent). Это работает, но:

  • Поля между строками не вызывают сигналы
  • Пробел слева от (выровненных по правому краю) меток не вызывает сигнал
  • Виджеты справа не вызывают сигнал, потому что я не удосужился подкласс всех из них

Что такое благословенный Qt подход к такого рода проблеме?

Некоторые вещи, о которых я могу думать:

  1. Сделайте родительский объект formlayout виджетом, который фильтрует все события перемещения мыши (отслеживание мыши?) И проверяет, вошла ли мышь в какую-либо строку.
  2. Измените formlayout на QVBoxLayout и превратите строки в некоторый пользовательский виджет, например FormRowWidget, который обрабатывает как события наведения, так и элементы выравнивания формы.

Ни один не очень хороший.

1 Ответ

0 голосов
/ 27 октября 2010

Я закончил тем, что использовал первое из двух решений.Достаточно хорошо, и с некоторой работой его можно выделить в повторно используемый подкласс QFormLayout.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...