进度栏中的qml进度为跳转

进度栏中的qml进度为跳转,qml,qtquick2,Qml,Qtquick2,我使用ProgressBar作为QtQuick.Controls 1.4。 在qml中: 还有C++类: 在MyProgress中,有一个QThread来更新“progress”。 然后,在qml中,我添加了一个事件处理程序: 但是,进度条中的进度看起来像跳跃,跳跃,跳跃,而不是线性递增。 我认为这是因为进度太快,GUI线程没有时间刷新。 有人有什么建议吗?使用数字信息更新进度 按如下方式更新代码: MyProgress { id: progress onProgressC

我使用ProgressBar作为QtQuick.Controls 1.4。 在qml中:

还有C++类:

在MyProgress中,有一个QThread来更新“progress”。 然后,在qml中,我添加了一个事件处理程序:

但是,进度条中的进度看起来像跳跃,跳跃,跳跃,而不是线性递增。 我认为这是因为进度太快,GUI线程没有时间刷新。 有人有什么建议吗?

使用数字信息更新进度

按如下方式更新代码:

MyProgress {
    id: progress
    onProgressChanged:{
        progressAnimation.to = progress
        progressAnimation.duration =
                (progress - myProgressBar.value) * 100 // change 100 to speed up or slow down animation.
        progressAnimation.restart()
    }
}
NumberAnimation {
    id: progressAnimation
    target: myProgressBar
    property: "value"
}
class MyProgress: public QObject
{
    Q_OBJECT
    Q_PROPERTY(int progress READ GetProgress NOTIFY progressChanged)
public:
    explicit MyProgress(QObject *parent = 0);

public:
    int GetProgress();
signals:
    void progressChanged(const int progess);
private:
    int m_progress;

};
MyProgress {
    id: progress
    onProgressChanged:{
        myProgressBar.value = progress
    }
}
MyProgress {
    id: progress
    onProgressChanged:{
        progressAnimation.to = progress
        progressAnimation.duration =
                (progress - myProgressBar.value) * 100 // change 100 to speed up or slow down animation.
        progressAnimation.restart()
    }
}
NumberAnimation {
    id: progressAnimation
    target: myProgressBar
    property: "value"
}