在QT上显示图片的方法有很多,主要有三种:label上显示;直接画出来;容器显示。


(1)显示gif图片(label上显示):

         新建一个工程,我们先在designer中,添加一个QLabel部件。将QLabel拉成适当大小,在类cpp函数中添加如下程序:

#include "widget.h"
#include "ui_widget.h"
#include <QLabel>
#include <QMovie>

Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
QMovie *movie =new QMovie("D:/Project/Qt/testclass/2.gif");
ui->label->setMovie(movie);
movie->start();
}

Widget::~Widget()
{
delete ui;
}

      这里要注意QMovie中的路径名:"D:/Project/Qt/testclass/2.gif" 这里的路径斜杠和WINDOWS下是相反的,

WINDOWS下默认是反斜杠。编译运行后,就会看到GIF文件在播放了。



(2)label上显示图片:

     把label.png放到工程目录顶层,直接

     QPixmap pixmap("label.png");

     ui->title_label->setPixmap(pixmap);

     ui->title_label->show();

     可以直接:

     label->setPixmap(QPixmap("./pic.jpg"));  

     或者:

     QImage *image= new QImage("./pic.jpg");  

     label->setPixmap(QPixmap::fromImage(*image));

     再或者在中途换某个图像的话:

     QImage *image= new QImage("./pic1.jpg");  

     label->setPixmap(QPixmap::fromImage(*image));

     ...........

     image->load("./pic2.jpg");



(3)直接画出图片

void logindlg::paintEvent(QPaintEvent*)

{
     QPainterpainter(this);
     QPixmappix;
     pix.load("D:/QT/login/login/images/delta.png");
     painter.drawPixmap(0,0,100,33,pix);
     //painter.drawLine(0,0,100,100);
}



(4)程序启动时的图片:

     QApplication app(argc, argv);
     QSplashScreen *splash = new QSplashScreen;
     splash->setPixmap(QPixmap(":/images/splash.png"));//设置图片
     splash->show();//显示图片
     Qt::Alignment topRight = Qt::AlignRight | Qt::AlignTop;
     splash->showMessage(QObject::tr("Setting up the main window..."),topRight, Qt::white);//显示信息
     MainWindow mainWin;
     splash->showMessage(QObject::tr("Loading modules..."),
                         topRight, Qt::white); //显示信息
     loadModules();
     splash->showMessage(QObject::tr("Establishing connections..."),
                         topRight, Qt::white); //显示信息
     establishConnections();
     mainWin.show();
     splash->finish(&mainWin);//图片一直显示到mainWin加载完成
    delete splash;//释放空间,节省内存
    return app.exec();
       

       首先你得加载一张能显示透明的图片,jpg格式肯定是不行的,一般都是png,还有不同的部件加载图片的方法也

不太相同,比如:

       QLabel加载图片:

       C/C++ code

       QString strPath=imagePath.value(day);  //图片路径

       QPixmap pix(strPath);

       dayLabel->setPixmap(pix);


       QPushButton加载图片:

       C/C++ code

       button->setIcon(QIcon("toolbutton.png")); 

       button->setIconSize(QSize(48, 48));

      其中setIconSize函数是用来截取图片的显示区域,如果没有该函数,该图片是被缩放的放到图片上用调色板加载

图片:
      C/C++ code

      QPalette p = palette(); 

      p.setBrush(QPalette::Button, QBrush(QPixmap("toolbutton.png"))); 

      setPalette(p);


     另外实现按钮的透明:

     C/C++ code

     button->setFlat(true);

    还有就是用绘制事件函数了:

    C/C++ code

    QPixmap arrayImage("/home/image/array.png"); //图片路径

    QRect arrayRect(0,0,50,50); //截取图片区域

    QPainter painter;

    painter.drawPixmap(QPoint(100,100),arrayImage,arrayRect); //打印图片






Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐