2016-12-03 131 views
0

提前感谢您的阅读和帮助。Qt - 在MainWindow上显示由QListWidget选择的动画GIF

我想要做一个基于QListWidget的GIF管理器,您可以从列表中选择一个GIF(使用on _ * _ itemClicked,如下所示),它会在下面的空间中显示动画GIF列表(或横向,无所谓)。

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

我已经使用了一段代码上面试过,但它说明不了什么。这只是一个无用的尝试,所以GIF路径是一样的,你不必担心它。

老实说,我在论坛和这个关于GIFS和动画的网站上搜索了很多代码,而且我见过的所有东西都没有为我工作。

我该如何继续?我想我应该在用户界面中使用一些图形QWidget,并将其与_ * _ itemClicked上的函数关联,以便从QListWidgetItem中获取图像的位置,并显示我在UI中指向的位置。

我已经得到了由冲浪强大的谷歌粘贴在这里的代码,它带给我有些疑惑:

  • 我创建了一个QLabel与主窗口作为父。好的,但它会出现在哪里?
  • 我不能在设计器中创建一个小部件,我可以定义它将在哪里,并使GIF工作?

我想我已经正确地解释了我自己,如果不是让我知道。

编辑:我想我需要的是一个QLabel,它位于URL列表下方的MainWindow中。如何在QtDesigner中形成QLabel,然后在代码中使用相同的QLabel并使用GIF进行操作?

回答

0

我想,你需要包含到的.pro

QTPLUGIN  += qgif  

,并显示label->show();

当然你也可以在设计中添加事物中。您可以添加您创建的自定义小部件,但您需要制作特殊项目,为Designer创建一个“插件”并在发布模式下构建它,然后将插件安装到适当的插件文件夹中。 对于您应该肯定的是,那些被添加到.pro文件:

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

然后,你需要声明和实现自QObject和QDesignerCustomWidgetInterface导出插件。

检查有效性:mov->isValid()依赖外部资源良好的代码最终成为小灾难的根源。程序要么需要一个插件的.dll旁边或静态插件链接它

当你安装Qt,你安装的应用程序称为QtAssistant。利用它。这是很大的帮助。以及他们在Qt目录中获得的论坛和示例存储。 Qt5在线获得插件示例:http://doc.qt.io/qt-5/qtwidgets-tutorials-widgets-childwidget-example.html

+0

我已经包括你说的话,甚至和isValid()。看起来GIF是有效的,但没有显示。 –

0

好的,我发现自己是答案。这实际上是相当愚蠢的:

我没有意识到我可以选择使用ui->标签在QtDesigner中创建的QLabel并对其进行处理。

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

新手错误......