QT显示图片的四种方法

原文地址::http://www.cnblogs.com/s_agapo/archive/2012/03/13/2394176.html


相关文章

1、Qt:设置背景图片的三种方式(setAutoFillBackground)----http://blog.csdn.net/liuligui5200/article/details/47612403

2、Qt中为按钮添加图片的几种方法----http://blog.csdn.net/SZ_Silence06/article/details/51077992


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); //打印图片




//=============================================================================================================================

备注::

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



### 回答1: 在接口测试中,依赖登录状态的接口需要先进行登录操作,获取登录后的token或session等信息,然后将这些信息作为请求参数传递给需要测试的接口。测试时需要验证登录状态是否正确,以及接口返回的数据是否符合预期。同时,还需要测试登录状态失效后的接口返回情况,以保证系统的安全性和稳定性。 ### 回答2: 在接口测试中,当涉及到需要登录状态的接口时,需要特别注意测试。因为这些接口需要保证在正确的登录状态下才能正确地进行操作和返回结果。下面是一些应该考虑到的测试步骤: 1.确定登录状态对接口的影响 在测试依赖登录状态的接口之前,需要明确登录状态对接口的影响。为此,我们应该在测试计划中提供详细的用例。测试人员应该体面地覆盖所有目标结果,并特别注意测试通过不同用户角色的接口,以确保在不同用户角色的登录状态下接口行为的正确性。 2.独立测试登录接口 在测试依赖登录状态的接口之前,需要先独立测试登录接口。如果登录接口出现问题,那么依赖登录状态的接口肯定无法工作。在这种情况下,测试团队必须确保登录接口能够正常的执行和返回预期结果。 3.操纵缓存和Cookies 测试通过操纵缓存和Cookies模拟操作会话失效情况,从而测试依赖登录状态的接口。例如,通过删除或修改Cookies或缓存数据以模拟过期会话,以确保接口的行为和状态正确响应。同时,测试也可以操作在同一时间内的多个会话,以确保会话和管理的正确性。 4.模拟登录和注销场景 测试人员可以通过不同的方式模拟登录和注销场景。例如,测试可以通过模拟重复登录或同时存在多个登录会话的情况来测试接口的准确性,并且在随后的注销场景中,测试可以验证是否安全注销了会话,并且没有留下敏感信息在会话中。 5.模拟会话超时 在实际使用过程中,会话超时是常见的场景之一。测试人员需要模拟会话超时的场景,并且确认接口的响应是否正确。 总之,测试依赖于登录状态的接口是非常重要的。确保正确地测试会话管理,行为和状态会有助于提高整个应用程序的质量,达到用户的期望。 ### 回答3: 在进行接口测试中,遇到依赖登录状态的接口,需要采取一些特殊的测试方法,以确保测试结果的准确性和全面性。以下是一些测试建议: 1. 准备测试数据 登录状态的接口测试需要有一定的测试数据,包括登录用户名和密码。测试数据可以通过手动创建,或者通过自动化测试工具创建。 2. 保持登录状态 在进行接口测试时,需要保持登录状态才能执行后续操作。可以使用手动方式登录,或者通过代码自动化登录,并将登录状态保存下来。 3. 测试正常登录和非法登录的情况 接口测试时需要测试正常登录和非法登录的情况,以确保系统能够正确处理这些情况。正常登录需要输入正确的用户名和密码,而非法登录则需要输入不存在的用户名或错误的密码。 4. 测试登录状态失效的情况 在接口测试中,需要模拟登录状态失效的情况,以确保系统能够正确处理这种情况。可以通过手动方式注销登录,或者在代码中设置登录状态失效。 5. 测试重复登录的情况 有些系统可能不允许用户重复登录,需要测试这种情况。可以通过手动方式和代码自动化方式测试。 6. 针对特定用户测试 如果是针对特定用户进行接口测试,需要使用特定用户的账号进行测试,确保测试结果具有代表性。 综上所述,接口测试中依赖登录状态的接口测试,需要考虑多种情况,依据不同情况采取不同的测试方法,这样才能保证测试结果的准确性和完整性。同时,可以通过自动化测试工具执行测试,提高测试效率和一致性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值