我是靠谱客的博主 帅气飞机,最近开发中收集的这篇文章主要介绍【嵌入式GUI-Qt编程】qt计时器前言一、计时器计时单次,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 前言
  • 一、计时器
  • 计时单次


前言

QTimer 类为计时器提供了一个高级编程接口。要使用它要创建一个 QTimer对象,将其 timeout() 信号连接到相应的插槽,然后调用 start()。从那时起,它将以恒定的间隔发出 timeout() 信号。


一、计时器

在这里插入图片描述
main.cpp

#include "mainwindow.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.setWindowTitle("鹏哥计时器");
    w.show();
    return a.exec();
}

mainwindows.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QDebug"
#include "QTime"
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    mtimer = new QTimer();
    //把计时器的timeout信号与槽函数关联
    connect(mtimer,&QTimer::timeout,this,&MainWindow::update_time);
}
MainWindow::~MainWindow()
{
    delete ui;
    QTimer mtimer;
}
void MainWindow::update_time()//槽函数
{
    QString tstr = QTime::currentTime().toString("hh:mm:ss");
    ui->label->setText(tstr);
    qDebug()<<tstr;
    qDebug()<<QDate::currentDate().toString("yyyy-MMMM-dddd");
}
void MainWindow::on_pushButton_clicked()
{
    if(mtimer->isActive())
    {
       mtimer->stop();
    }
    else
    //启动定时器
    mtimer->start(1000);
}

mainwindows.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTimer>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

protected slots:
    void update_time();
private slots:
    void on_pushButton_clicked();

private:
    Ui::MainWindow *ui;
    QTimer *mtimer;
};
#endif // MAINWINDOW_H

在这里插入图片描述

计时单次

如果让槽函数只调用一次,那么可以下面两种方式实现
1、通过调用 setSingleShot(true)将计时器设置为仅超时一次。
2、可以使用静态 QTimer::singleShot() 函数在指定的时间间隔后调用插槽。

QTimer::singleShot(200, this, &MainWindow::update_time);

因为有时候加载数据需要时间所以把界面显示出来后在加载就需要用到单次计时
在这里插入图片描述
mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QDebug"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    connect(&mtimer,&QTimer::timeout,this,&MainWindow::load_data);
    mtimer.setSingleShot(true);//设置为单次
    mtimer.start(3000);        //设置为3秒
    qDebug()<<"开始";

    //单次定时器
    QTimer::singleShot(10000,this,&MainWindow::load_data);
}

MainWindow::~MainWindow()
{
    delete ui;

}

void MainWindow::load_data()
{
    qDebug()<<"加载后台数据";
}


mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTimer>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void load_data();

private:
    Ui::MainWindow *ui;
    QTimer mtimer;      //定义一个定时器
};
#endif // MAINWINDOW_H

最后

以上就是帅气飞机为你收集整理的【嵌入式GUI-Qt编程】qt计时器前言一、计时器计时单次的全部内容,希望文章能够帮你解决【嵌入式GUI-Qt编程】qt计时器前言一、计时器计时单次所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部