Qml在无框架QQuickView(QtQuick2)中闪烁动画

时间:2016-01-13 20:17:05

标签: c++ qml flicker qquickview

的main.cpp

#include <QGuiApplication>
#include <QQuickView>

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);
    QQuickView *view= new QQuickView;
    view->setFlags(Qt::Tool|Qt::WindowStaysOnTopHint|Qt::FramelessWindowHint);
    view->setColor(Qt::transparent);
    view->show();
    view->setSource(QUrl(QStringLiteral("qrc:/main.qml")));
    return app.exec();
}

qmlfile:

import QtQuick 2.0

Rectangle {
    width: 100
    height: 100
    color: "#80808080"

    Rectangle {
        width: 10
        height: 10
        anchors.centerIn: parent
        RotationAnimation on rotation {
            duration : 15000
            easing.type: Easing.Linear
            loops: Animation.Infinite
            from: 0
            to: 360
        }
    }
}

透明背景flickers,但仅限于动画。这个例子很基本,所以问题是什么?

2 个答案:

答案 0 :(得分:0)

简短回答: 将环境变量设置为QSG_RENDER_LOOP = basic

答案很长: 我不知道确切的内部。当设置QSG_RENDER_LOOP = threaded时,Qmlscene由多个线程呈现。但有些驱动程序无法呈现流畅的动画。因此,对于未经测试的系统(x11,mesa),最初QSG_RENDER_LOOP设置为基本。由于5.5线程是默认值。

答案 1 :(得分:0)

尝试“view-&gt; setFlags(Qt :: SplashScreen)” 也许解决了这个问题,但窗口无法调整大小和移动。它没有意义,但确实如此。