Какое свойство поддерживается в QPropertyAnimation для анимации?

Я изучаю Qt и думаю, что кнопки анимации важны. Я пытаюсь создать свой собственный класс QPushButton, который переопределяет ввод мыши & оставить событие и использовать фреймворк qt. QPropertyAnimation

QPropertyAnimation(QObject * target, const QByteArray & propertyName, QObject * parent = 0)

Так что, если я хочу анимировать его размер, я могу использовать «geometry» как propertyName
но меня смущает, когда я хочу изменить оба цвет текста а также фоновый цвет тоже … что я должен поставить как propertyName? искал где-нибудь, но не нашел никаких документов о том, какое свойство я мог анимировать и как оно названо в propertyName аргумент конструктора.

Ожидаемый ответ будет все возможные параметры, такие как «геометрия» в QtCore.QPropertyAnimation(self,"geometry") (PyQt4 / PySide)

Я использую PyQt4, но я могу использовать PySide & Qt4.8 C ++ тоже, так что ответ в любой из этих библиотек будет в порядке (изучу их все)

Редактировать:

я нашел этот используя «цвет», и он меняет весь цвет кнопки (цвет фона), все еще не знаю, как сделать текст видимым & оживить цвет текста

2

Решение

Цвет текста и цвет фона не являются свойствами Qt. Таким образом, вы не можете оживить их, используя QPropertyAnimation,

Вы можете найти список QWidget Свойства в соответствующем разделе официальной документации: http://doc.qt.io/qt-4.8/qwidget.html

Если вы хотите динамически изменить некоторые произвольные атрибуты, такие как цвет текста, вы можете запустить QTimer и выполнять необходимые операции в слоте, подключенном к таймеру timeout сигнал.


—upd—

В C ++ Qt вы не можете анимировать свойство ‘color’, потому что такого свойства нет. Если вы попытаетесь это сделать, вы получите следующее предупреждение в консоли:

QPropertyAnimation: you're trying to animate a non-existing property color of your QObject

Как подкласс QVariantAnimation, QPropertyAnimation не поддерживает все QVariant типы недвижимости. Поддерживаемые типы перечислены в документе:

Не все типы QVariant поддерживаются. Ниже приведен список
поддерживаемые типы QVariant:

Int
UInt
двойной
терка
QLine
QLineF
QPoint
QPointF
QSize
QSizeF
QRect
QRectF
QColor

Если вы хотите анимировать свойство другого типа, вы должны зарегистрировать для него функцию интерполяции:

QVariant cursorInterpolator(const QCursor &start, const QCursor &end, qreal progress)
{
...
return QCursor(...);
}
...
qRegisterAnimationInterpolator<QCursor>(cursorInterpolator);
1

Другие решения


По вопросам рекламы [email protected]