2016-01-13 108 views
0

的main.cpp閃爍設爲Qml

#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,而只用一個動畫。這個例子很基本,那麼問題是什麼?

+0

嗯,這不是QML代碼,也許是平臺支持的問題?如果你不設置這些額外的視圖標誌,它會閃爍嗎? – dtech

+0

沒有。沒有FramelessWindowHint everthing是好的。 – ManuelSchneid3r

+0

好吧,它看起來像一個錯誤,你應該發佈一個錯誤報告。只是不要屏住呼吸快速解決:) – dtech

回答

0

簡短的回答: 設置環境變量來QSG_RENDER_LOOP =基本

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

0

嘗試「view-> setFlags(Qt :: SplashScreen)」 也許可以解決這個問題,但窗口無法調整大小和移動。這沒有意義,但它是。