рисовать виджет qt больше по мере наведения на него указателя мыши (перекрытие виджетов)

Я хотел бы создать простой эффект с помощью графического интерфейса qt, но я понятия не имею, как этого добиться.

У меня есть несколько виджетов, которые я реализовал как подклассы qwidget. Они являются частью другого виджета и живут в макете. Когда мышь наводит курсор на эти виджеты, я хочу, чтобы они казались больше, чтобы выделить выбранный.

Это то, что я уже пробовал: переопределить событие рисования и просто нарисовать его больше. Но затем другие виджеты, которые также находятся в том же макете, закрашивают негабаритные области.

Я также попытался вызвать функцию рисования «вручную» из родительского окна, чтобы получить контроль над порядком рисования. Но и это не помогло.

Я думаю, что должна быть возможность добиться этого эффекта в этом qt, но я просто не знаю, как это сделать. Любые идеи?


person Valerie    schedule 08.09.2011    source источник
comment
Я не думаю, что рисовать его крупнее — хорошая идея, но вы пытались raise() изменить виджет, когда делали это?   -  person Mat    schedule 08.09.2011
comment
Но я хочу, чтобы виджет действительно был больше. К сожалению, raise() не предотвращает перерисовку виджета другими виджетами. Если это поможет: я хочу, чтобы эффект был аналогичен автоматически скрываемым частям, например, обозревателю решений Visual Studio.   -  person Valerie    schedule 08.09.2011
comment
Затем увеличьте его с помощью resize(), но это, вероятно, испортит ваш макет. Вам возможно удастся заставить его работать с проставками. Я не знаю, и мне не нравится, когда что-то движется под мышкой. Однако изменение цвета/выделения в порядке.   -  person Mat    schedule 08.09.2011
comment
Вы правы, но мое устройство ввода не мышь. Я использую положения рук из отслеживания скелета Kinect. И если я разработаю элементы управления, которые будут достаточно большими, чтобы поместить руки на экране, мой экран будет полностью заполнен элементами управления. Вот почему я хочу масштабировать их, когда рука зависает над ними.   -  person Valerie    schedule 08.09.2011


Ответы (1)


Вы можете:

  • создайте свой графический интерфейс внутри QGraphicsView с QGraphicsWidgets и используйте setScale, когда мышь входит или покидает виджет, или
  • используйте QML.
person alexisdm    schedule 08.09.2011