Я изучаю 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 ++ тоже, так что ответ в любой из этих библиотек будет в порядке (изучу их все)
Редактировать:
я нашел этот используя «цвет», и он меняет весь цвет кнопки (цвет фона), все еще не знаю, как сделать текст видимым & оживить цвет текста
Цвет текста и цвет фона не являются свойствами 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);