C++ 为什么我的窗口没有';不显示任何QPixmap图片?
我正在尝试创建一个显示.gif的基本窗口,但它没有。我确保该文件与我的main.cpp位于同一目录中。我尝试了其他文件扩展名,但仍然不起作用C++ 为什么我的窗口没有';不显示任何QPixmap图片?,c++,qt,qt5,qpixmap,C++,Qt,Qt5,Qpixmap,我正在尝试创建一个显示.gif的基本窗口,但它没有。我确保该文件与我的main.cpp位于同一目录中。我尝试了其他文件扩展名,但仍然不起作用 #include <QApplication> #include <QBoxLayout> #include <QLabel> #include <iostream> int main(int argc, char *argv[]) { QApplication a(argc, argv); QWidge
#include <QApplication>
#include <QBoxLayout>
#include <QLabel>
#include <iostream>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget *window = new QWidget;
window->setFixedSize(640, 480);
QLabel *gif_anim = new QLabel();
QPixmap const *movie = new QPixmap("sea.gif");
gif_anim->setPixmap(*movie);
QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(gif_anim);
std::cout << movie->isNull() << std::endl;
window->setLayout(layout);
window->show();
return a.exec();
}
#包括
#包括
#包括
#包括
int main(int argc,char*argv[])
{
质量保证申请a(argc、argv);
QWidget*窗口=新的QWidget;
窗口->设置固定大小(640480);
QLabel*gif_anim=新的QLabel();
QPixmap const*movie=新的QPixmap(“sea.gif”);
gif_anim->setPixmap(*电影);
QHBoxLayout*布局=新的QHBoxLayout;
布局->添加小部件(gif\u动画);
std::cout isNull()设置布局(布局);
窗口->显示();
返回a.exec();
}
我使用isNull()方法进行了测试,它告诉我我的QPixmap为null(我不知道为什么)
非常感谢您的帮助。您有以下错误:
- QPixmap不支持gif格式,如果要显示gif,必须使用QMovie
- 文件的路径是相对于可执行文件的,而不是源代码的,因此在这些文件中,我使用一个小命令将文件从源代码文件夹复制到构建文件夹
COPY_CONFIG = sea.gif
copy_cmd.input = COPY_CONFIG
copy_cmd.output = ${QMAKE_FILE_IN_BASE}${QMAKE_FILE_EXT}
copy_cmd.commands = $$QMAKE_COPY_DIR ${QMAKE_FILE_IN} ${QMAKE_FILE_OUT}
copy_cmd.CONFIG += no_link_no_clean
copy_cmd.variable_out = PRE_TARGETDEPS
QMAKE_EXTRA_COMPILERS += copy_cmd
main.cpp
QWidget window;
window.setFixedSize(640, 480);
QLabel *gif_anim = new QLabel();
QMovie *movie = new QMovie("sea.gif");
gif_anim->setMovie(movie);
movie->start();
QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(gif_anim);
window.setLayout(layout);
window.show();
我将QMovie用于gif动画,而不是QPixmap:
QLabel *gif_anim = new QLabel();
QMovie *movie = new QMovie("sea.gif");
gif_anim->setMovie(*movie);
movie->start();
我通常在Qt中检查支持的图像格式。您可以使用以下代码执行此操作:
qDebug() << "Supported image formats: " << QImageReader::supportedImageFormats();
qDebug()在QPixmap的详细描述中,它表示支持gif:。尽管如此,我还是使用了您的解决方案,将sea.gif放在可执行文件旁边,但它仍然不起作用。此外,您的*.pro行使我的编译暂停,并在Qt Creator“shell”中提出了一个问题:“sea.gif是文件还是目录?”我不知道在哪里键入答案。@a.Neo您确定编译.gif时没有删除吗?,尝试使用.gif的完整路径,QPixmap允许显示.gif,但不允许显示动画。另一方面,.gif在main.cpp旁边?没关系,它现在可以工作了。我不应该将sea.gif放在可执行文件的同一目录中,而是放在上面一级。非常感谢。