QT显示图片

来源:互联网 发布:mysql启动 编辑:程序博客网 时间:2024/05/17 04:05

大致为

label上显示

直接画出来

容器显示

 

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

http://archive.cnblogs.com/a/2053701/

 

在QT中要显示GIF图片,不能通过单单的添加部件来完成.

还需要手动的编写程序.

工具:QT Creator

新建一个工程,我们先在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文件在播放了.

如下图:



当文档GIF图片显示:

复制代码
#include <QtGui/QApplication>
#include 
<QLabel>
#include 
<QMovie>

int main(int argc,char*argv[])
{
QApplication app(argc,argv);

QLabel 
*label =new QLabel();
QMovie 
*movie =new QMovie("D:/Project/Qt/firstQT/2.gif");
label
->setMovie(movie);
movie
->start();
label
->show();

return app.exec();
}
复制代码

 

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----------直接画出图片-------------------------

voidlogindlg::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();
来自: http://hi.baidu.com/sdink/blog/item/879e7013027a7fcaa7ef3f83.html
首先你得加载一张能显示透明的图片,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); //打印图片


首先看下QImage、QPixmap、QBitmap、QPicture 四个类

QImage是设计并优化来为 I/O操作的,可以直接访问和操作像素,而QPixmap是设计并优化来在屏幕上显示图片的。QBitmap仅是继承自QPixmap的一个方便使用的类,是为了确保图片的深度为1.QPicture是绘图设备,可以用来重现QPainte。

 

1、一个简单的图片显示程序(以下仅是部分程序段,相信大家会看明白)

QPixmap pixmap( "image.jpg" );  //image.jpg在程序的当前目录下。
       PixmapLabel1
->setPixmap(pixmap);   //PixmapLabel1标签即可显示图片。

 

2、将QImage转换为QPixmap

QString fileName = QFileDialog::getOpenFileName(this,
                          tr("Open File"), QDir::currentPath());
    if (!fileName.isEmpty()) 
           {
        QImage image(fileName);  //定义QImage类。
        if (image.isNull()) {
          QMessageBox::information(this, tr("Image Viewer"),
                          tr("Cannot load %1.").arg(fileName));
          return;
                 }
                 ui.label->setPixmap(QPixmap::fromImage(image));  将QImage转换为QPixmap。
           }

3、QImage的加载图片的方法(个人现只懂两种)

  (1)、QImage image(fileName);  //直接在QImage类的构造函数搞定,fileName是指应用程序的当前目录,相信大家能理解这里所说的当前目录。

  (2)、    QImage image;
                         image.load(fileName);   
//使用了load方法。

 


原创粉丝点击