2016-12-03 7 views
0

Vielen Dank im Voraus für das Lesen und Hilfe.Qt - Anzeige von animierten GIF von QListWidget auf MainWindow

Ich versuche, einen GIF-Manager basierend auf einem QListWidget zu machen, wo Sie ein GIF aus der Liste auswählen können (mit _ * _ itemClicked, wie Sie unten sehen können) und es wird das animierte GIF in dem Raum unter dem erscheinen Liste (oder seitwärts, spielt keine Rolle).

void MainWindow::on_listOfURL_itemClicked(QListWidgetItem *item) 
{ 
    QLabel* lab = new QLabel(this); 
    QMovie* mov = new QMovie(":/res/giftest/C:/Users/Rober/Desktop/giftest.gif"); 
    lab->setGeometry(200, 200, 200, 200); 
    lab->setMovie(mov); 
    lab->show(); 
    mov->start(); 
} 

GUI screenshot of the program

Ich habe versucht, über das Stück Code, aber es zeigt nichts. Es ist nur ein vergeblicher Versuch, es zum Laufen zu bringen, deshalb ist der GIF-Pfad der gleiche, Sie brauchen sich nicht darum zu sorgen.

Ehrlich gesagt, ich habe eine Menge Code in Foren und dieser Website in Bezug auf GIFS und Animationen gesucht, und nichts von dem, was ich gesehen habe, hat für mich funktioniert.

Wie soll ich fortfahren? Ich denke, ich sollte einige Grafiken QWidget in der Benutzeroberfläche verwenden und es mit der Funktion auf _ * _ itemClicked verknüpfen, so dass es den Speicherort des Bilds von der QListWidgetItem übernimmt und zeigt, wo ich in der Benutzeroberfläche zeigte.

Ich habe den Code bekommen hier eingefügt durch die Mighty Google surfen, und es bringt mir einige Zweifel:

  • ich eine QLabel mit dem Hauptfenster als Elternteil. Okay, aber wo wird es erscheinen?
  • Kann ich nicht im Designer ein Widget erstellen, das ich definieren kann, wo wird es sein und nur die GIF arbeiten?

Ich denke, ich habe mich richtig erklärt, wenn nicht nur lassen Sie mich wissen.

EDIT: Ich denke, was ich brauche, ist ein QLabel, das innerhalb des MainWindow, unterhalb der URL-Liste ist. Wie gestalte ich das QLabel in QtDesigner und nehme dann dasselbe QLabel in Code und manipuliere es mit dem GIF?

Antwort

0

Ich denke, müssen Sie in .pro umfassen

QTPLUGIN  += qgif  

und zeigen label->show();

Natürlich kann man die Dinge in Designer hinzufügen können. Sie können benutzerdefinierte Widgets hinzufügen, die Sie erstellen, aber Sie müssen ein spezielles Projekt erstellen, das ein "Plug-in" für Designer erstellt und es im Freigabemodus erstellt, und dann das Plugin im richtigen Plugin-Ordner installieren. Dafür sollten Sie sicher sein, dass diejenigen, Datei .pro hinzugefügt:

CONFIG  += plugin 
TEMPLATE = lib 
QT   += widgets uiplugin 

Dann brauchen Sie Plugin von QObject UND QDesignerCustomWidgetInterface abgeleitet zu erklären und zu implementieren.

DO CHECK-Gültigkeit: mov->isValid() Code, der auf externen Quellen beruht, die gut sind, wird schließlich eine Quelle für kleine Katastrophen. Das Programm benötigt entweder die DLL eines Plugins oder das damit verknüpfte statische Plugin

Wenn Sie Qt installiert haben, haben Sie die App namens QtAssistant installiert. Einen Vorteil draus ziehen. Es ist sehr viel Hilfe. sowie ihre Foren und Beispiele Speicher haben Sie in Qt-Verzeichnis. Qt5 hat Plugin-Beispiel online: http://doc.qt.io/qt-5/qtwidgets-tutorials-widgets-childwidget-example.html

+0

ich eingeschlossen haben, was Sie sagen, auch die isValid(). Sieht so aus, als wäre das GIF gültig, aber es wird nicht angezeigt. –

0

Okay, ich habe mich selbst die Antwort gefunden.Es war eigentlich ziemlich dumm:

Ich erkannte nicht, dass ich ein QLabel, das in QtDesigner erstellt wurde, mit ui-> label auswählen und manipulieren konnte.

ui->label->setMovie(selectedGif); 
     selectedGif->start(); 
     ui->label->show(); 

Anfänger Fehler ...

Verwandte Themen