QTimer定时器相册

控件设计

定时相册

Widget.h
#define TIMEOUT 1*1000

private slots:
    void on_startB_clicked();  //开始按钮
    void timeoutSlot();        //自定义槽

    void on_stopB_clicked();   //暂停按钮

    void on_singleB_clicked(); //单次按钮

private:
    Ui::Widget *ui;

    QTimer *timer; //定义公用定时器
    int picID;     //张数
Widget.cpp
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //创建对象
    timer = new QTimer;
    //初始化赋值
    picID = 2;


    /*
     * 初始化界面
     */
    QImage img;
    img.load("F:\\Hm\\Cpp\\workspace\\qt\\Qtime\\1.jpg");
    ui->label->setPixmap(QPixmap::fromImage(img));


}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_startB_clicked()
{

    //启动定时器
    timer->start(TIMEOUT);
    //定时器触发槽
    connect(timer,&QTimer::timeout,this,&Widget::timeoutSlot);

}

void Widget::timeoutSlot(){

    //每次触发+1变更图片
    QString path("F:\\Hm\\Cpp\\workspace\\qt\\Qtime\\");
    path += QString::number(picID);
    path += ".jpg";

    QImage img;
    img.load(path);
    ui->label->setPixmap(QPixmap::fromImage(img));

    //循环
    picID++;
    if(5 == picID){
        picID = 1;
    }

}

void Widget::on_stopB_clicked()
{
    //线程暂停
    timer->stop();
}

void Widget::on_singleB_clicked()
{
    //自带单次触发槽函数
    QTimer::singleShot(1000,this,SLOT(timeoutSlot()));
}

posted on 2026-06-12 16:33  薄观厚积  阅读(4)  评论(0)    收藏  举报