QT中有 轮播图的需求,按照正常html版本 。只需要配置数组就能搞定,但是c++ qt版本 应该用什么了。 第一想到的是采用定时器。
// 定时器初始化
{
m_pTime = new QTimer(this);
m_pTime->start(4 * 1000);//启动定时器并设置播放时间间隔
m_pAutoFlag = true;
//连接自动播放槽函数
connect(m_pTime, SIGNAL(timeout()), this, SLOT(myautoPhotoSlot()));
// 上一页
connect(ui->imgToolBtn2, &QPushButton::toggled, [=](bool bChecked) {
myautBtnPhotoSlot("previous");
});
// 下一页
connect(ui->imgToolBtn1, &QPushButton::toggled, [=](bool bChecked) {
myautBtnPhotoSlot("next");
});
}
//自动播放函数
void CCendDetailsTabWidget::myautoPhotoSlot()
{
if (m_num != m_bannerList.count() && m_num <= m_bannerList.count())
{
QPixmap tempDir = m_bannerList.at(m_num); //从容器中找到要播放的照片的相对路径
ui->label_2->setScaledContents(true);
ui->label_2->setPixmap(QPixmap(tempDir));//显示图片
}
//判断自动播放的时候是否播放到了最后一张图片,如果是则停止自动播放
if (m_num == m_bannerList.count())
{
m_num = 0;
}
if (m_pAutoFlag)
{
m_num++;
}
}
//自动播放函数
void CCendDetailsTabWidget::myautBtnPhotoSlot(QString name)
{
if (name == "previous")
{
m_num--;
}
else {
m_num++;
}
if (m_num < 0)
{
m_num = 0;
}
if (m_num > m_bannerList.count())
{
m_num = m_bannerList.count();
}
if (m_num > 0 && m_num < m_bannerList.count())
{
QPixmap tempDir = m_bannerList.at(m_num); //从容器中找到要播放的照片的相对路径
ui->label_2->setScaledContents(true);
ui->label_2->setPixmap(QPixmap(tempDir));//显示图片
ui->imgToolTitle->setText(m_bannerNmaeList.at(m_num));
}
}