簡體   English   中英

Qml在無框架QQuickView(QtQuick2)中的動畫上閃爍

[英]Qml flicker on animation in frameless QQuickView (QtQuick2)

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
        }
    }
}

透明背景閃爍 ,但僅帶有動畫。 這個例子很基本,那又是什么問題呢?

簡短答案:將環境變量設置為QSG_RENDER_LOOP = basic

長答案:我不知道確切的內部構造。 設置QSG_RENDER_LOOP = threaded時,多個線程將呈現Qmlscene。 但是某些驅動程序無法渲染流暢的動畫。 因此,對於未經測試的系統(x11,mesa),最初QSG_RENDER_LOOP設置為基本。 由於5.5線程是默認設置。

嘗試“ view-> setFlags(Qt :: SplashScreen)”也許可以解決此問題,但是無法調整窗口大小和移動窗口。 這沒有道理,但確實如此。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM