Qt中在QLabel中连续的刷入图片

接上一篇博客(http://blog.csdn.net/usbgood/article/details/28720183)的问题继续。

问题是:如何在一个QLabel里连续的刷入图片,产生放幻灯片的效果。

上一次我用的方法是:把图片的路径存入到一个list里面,然后直接循环遍历那个list。

然后失败了。至于原因,个人根据过程来看有两种原因:

1、代码写的有问题。此处就不把原代码贴出来了。

2、直接for循环然后每次timer的时间太短,导致问题。


后面根据这个两个猜测换过了一个思路。

   定义一个全局变量用来记录图片所在的位置。
然后入口函数中启动时间指针。
然后在另一个函数中实现一张图片一张图片的画。
具体代码如下:

int g_iCount = 0; //全局变量

//写在构造函数中的
connect(ui->pushButton_Start, SIGNAL(clicked()), this, SLOT(OnMakeMovie()));
connect(m_Timer, SIGNAL(timeout()), this, SLOT(OnStartDisplayPicture()));
connect(ui->pushButton_Stop, SIGNAL(clicked()), this, SLOT(OnStopDisplayPicture()));

//各个槽函数的实现
void MakeMovie::OnMakeMovie()
{
    m_Timer->start();


    return ;
}


void MakeMovie::OnStartDisplayPicture()
{
    m_Timer->stop();

    if(m_LstPicturePath.empty())
    {
        return ;//此处应提醒用户没有图片
    }

    if(g_iCount
  > m_LstPicturePath.size())
    {
        g_iCount = 0;
    }

    const QString& strPath = m_LstPicturePath.at(g_iCount);
    m_Pix.load(strPath);
    m_Pix = m_Pix.scaled(m_LableW,
m_LableH, Qt::IgnoreAspectRatio);
    ui->label_Picture->setPixmap(m_Pix);

m_Timer->start(1 * 1000); 

    ++g_iCount;
}

void MakeMovie::OnStopDisplayPicture()
{
    m_Timer->stop();

    return ;
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值