什么是从C ++更新QML中的渐变值的最佳方法?

时间:2016-06-22 05:28:29

标签: c++ qml gradient

在我的QML文件中,我的渐变定义如下:

ColorizedRoundedButton
{
   gradient: Gradient   
           {
             GradientStop { position: 0.0; color: "#3f5c43" }            
             GradientStop { position: 0.33; color: "#113d14" }            
             GradientStop { position: 0.66; color: "#023105" }            
             GradientStop { position: 1.0; color: "#056508" }    
           }
}

所以在这里我希望通过样式表应用这个渐变值,即从C ++中精确设置该值。

我有这样的Style.h文件:

#include <QLinearGradient>

Q_DECLARE_METATYPE(QLinearGradient)

class Style: public QObject
{
  Q_PROPERTY(QLinearGradient PositiveGradient READ getPositiveGradient WRITE setPositiveGradient)

  QLinearGradient _positiveGradient;
  QLinearGradient getPositiveGradient();
  void setPositiveGradient(QLinearGradient p_grad);
}

使用QLinearGradient类型作为Q_PROPERTY并将QML文件更改为:

gradient: style.PositiveGradient 

这种方法不起作用,我收到运行时错误,因为无法将QLinearGradient分配给QQuickGradient *。

有人知道这个或任何更好的解决方案在c ++和QML之间传递梯度值的解决方案吗?

0 个答案:

没有答案