zoukankan      html  css  js  c++  java
  • QT显示图片(转)

    QT显示图片的方法有很多

    大致为

    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();
    首先你得加载一张能显示透明的图片,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); //打印图片
  • 相关阅读:
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    并行导致的进程数过大无法连接数据库
    Oracle 等待事件(Wait Event):Sync ASM rebalance 解析
    2套RAC环境修改scanip后客户端连接异常
    数据流通技术工具
    Hack The Box——Scavenger
    MySQL中InnoDB引擎对索引的扩展
    30分钟,教你从0到1搞定一次完整的数据可视化分析!
    【2020-MOOC-浙江大学-陈越、何钦铭-数据结构】树和堆(第五周的笔记和编程作业)
  • 原文地址:https://www.cnblogs.com/veins/p/3082453.html
Copyright © 2011-2022 走看看