2017-09-08 2 views
0

ich eine Anwendung verschiedene Mix-UI haben: QWidget :: createWindowContainer() für QML mit QQuickView Und QWidgetWie verbessern QQuickView aktualisieren

Wenn ich versuche, Übergang (Animation) meiner QWidget die Inhalte meiner QQuickView zu erstellen ist der Übergang nicht sehr glatt ...

Hier mein Code zusammengefasst:

QQuickView *myQuickView = new QQuickView("myqml") 
QState *mMenuStateHidden = new QState(); 
QState *mMenuStateVisible = new QState(); 

QStateMachine *mMachine = new QStateMachine(); 
mMachine->addState(mMenuStateHidden); 
mMachine->addState(mMenuStateVisible); 
mMahine->setInitialState(mMenuStateHidden); 

mGSlideMenu = QWidget::createWindowContainer(myQuickView); 

mMenuStateHidden->assignProperty(mGSlideMenu, "geometry", QRectF(QPointF(-mGSlideMenu->width(), height()),mGSlideMenu->size())); 
mMenuStateVisible->assignProperty(mGSlideMenu, "geometry", QRectF(QPointF(0, height()),mGSlideMenu->size())); 

QPropertyAnimation *lAnimOut = new QPropertyAnimation(mGSlideMenu, "geometry"); 


QSignalTransition *transition = mMenuStateHidden->addTransition(myQuickView->rootObject(), SIGNAL(menuClicked()), mMenuStateVisible); 
     transition->addAnimation(lAnimIn); 

QSignalTransition* transition2 = mMenuStateVisible->addTransition(myQuickView->rootObject(), SIGNAL(menuClicked()), mMenuStateHidden); 
     transition2->addAnimation(lAnimOut); 

mMahine->start(); 

Wie Sie in der linken Seite des gif sehen können, gibt es einen „schwarzen“ Artefakt ist; was nicht da ist wir die QML ist nicht geladen.

In the Left

Also meine Frage ist, wie ich meine QQuickView eine Anwendung mit einem besseren glatt zu haben, zu verbessern.

Thx Jungs,

+0

Zeigen Sie Ihren Code, um besser zu verstehen, es wäre toll, ein Gif von dem zu zeigen, was Sie besser verstehen. – eyllanesc

+0

Ich bearbeite meinen Beitrag. – yekmen

+0

Wie stellen Sie die Parameter von 'lAnimOut' ein? – eyllanesc

Antwort

0

fixiert ich mein Problem eine QQuickWidget statt QQuickView in Verwendung. Alles ist jetzt in Ordnung.

Thx!