IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 用QT实现一个计时器 -> 正文阅读

[C++知识库]用QT实现一个计时器

首先新建工程,Ctrl+N->Application(Qt)->Qt Widgets Application,然后进入设置界面,名称和路径随意就好;Build System不考虑性能用qmake比较简单;剩下的采用默认选项就行。

初始化结束后,其项目文件组织如下

  • Timer.pro 此为工程文件
  • Headers 用于存放头文件的目录
  • Sources 用于存放源代码
  • Forms 用于存放.ui文件,即界面设计文件

双击Forms下面的mainwindow.ui文件,进入图形化的UI编辑界面,左侧为各种控件,中间为程序设计的主窗口。由于一个计时器不需要太大的尺寸,故而可以直接拖动窗口右下角的三个点,更改其尺寸。也可以定位到右侧属性栏的geometry,展开后将宽度和高度分别设为400200

然后,将左侧Buttons下面的Push Button拖动到主窗口,然后在右侧可看到Push Button的各种属性。将QObject中的objectName改为pbStart;将QAbstractButton下的text改为start。一会儿用于开始计时。

在左侧搜索LCD,将LCD Number拖动到主窗口,将名字改为Timer,用于显示时间。

此时,我们最左侧的选项卡选中的是第三个设计,若点击第二个编辑,则可直接编辑窗口设计文件mainWindow.ui,然而只是让人看看,并不让编辑。但总之,至此已写完了一个简单的UI

在这里插入图片描述

接下来,要实现计时器的核心功能——计时,从而需要写c++代码。首先在.h文件中,写入需要的成员变量。考虑到要实现计时器的功能,所以至少需要一个用于计时的时钟和一个可以记录秒数的整数。故而进入mainWindow.h,在private:下输入成员,当然也不要忘了导入头文件,最终结果为

private:
    Ui::MainWindow *ui;
    QTimer * timer;
    QTime * TimeRecord;

除了成员变量,还要有成员函数。其中计时需要绑定一个函数,start按钮需要绑定一个,外加时间归零需要一个,故需三个成员函数,最终mainWindow.h内容为

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTimer>
#include <QTime>

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 initTime();
    void updateTime();
    void pbStart_clicked();
private:
    Ui::MainWindow *ui;
    QTimer * timer;
    QTime * TimeRecord;
};
#endif // MAINWINDOW_H

定义好头文件,接下来就要在.cpp中具体实现了,代码总共不到50行,如下:

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

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent) , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    timer = new QTimer;
    TimeRecord = new QTime;
    ui->Timer->setDigitCount(8);
    initTime();     //令LCD显示00:00:00
    //连接槽函数,将timer的timeout行为,连接到updateTime函数中
    connect(timer, SIGNAL(timeout()), this, SLOT(updateTime()));
    //当点击(clicked)pbStart时,调用函数pbStart_clicked
    connect(ui->pbStart, SIGNAL(clicked()), this, SLOT(pbStart_clicked()));
}

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

void MainWindow::initTime(){
    TimeRecord->setHMS(0, 0, 0); //时间复位为0
    ui->Timer->display(TimeRecord->toString("hh:mm:ss"));
}

void MainWindow::updateTime(){
    //每次更新时间,TimeRecord增加1
    *TimeRecord = TimeRecord->addSecs(1);
    ui->Timer->display(TimeRecord->toString("hh:mm:ss"));
}

void MainWindow::pbStart_clicked(){
    if (QString::compare(ui->pbStart->text(),"stop")){
        //当按钮内容不为'stop'时,说明开启计时
        timer->start(1000);
        ui->pbStart->setText("stop");//计时开始后,按钮变为'stop'
    }else{
        timer->stop();
        ui->pbStart->setText("start");
        initTime();
    }
}
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-21 20:30:29  更:2022-03-21 20:32:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:01:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码