【QT】计时器制作

应小伙伴的要求,做一个小计时器。功能是点击开始就从00:00:00开始计时,点击暂停就暂停计时,点击停止就停止计时。

界面如上图,使用ui设计师直接拖的。按钮和图标的图片都是网上下载的。用美图秀秀抠成了透明的,看起来会好看一点。

整体代码挺容易的,就是设一个定时器。代码如下:

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QDateTime>
#include <QTimer>
#include <QTime>
#include <QPixmap>
#include <QIcon>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void updateTime();
    void on_Start_clicked();
    void on_Stop_clicked();

private:
    Ui::MainWindow *ui;
    QTimer * timer;      //定时器 每秒更新时间
    QTime * TimeRecord;  //记录时间
    bool isStart;        //记录是否已经开始计时
    QIcon * startIcon;
    QIcon * pauseIcon;
    QIcon * stopIcon;
};

#endif // MAINWINDOW_H

mainwindow.cpp

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

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    setWindowIcon(QIcon(":/icon.png"));
    setWindowTitle("TimerZ");
    //setWindowFlags(Qt::FramelessWindowHint);
    isStart = false;     //初始为还未计时
    timer = new QTimer;  //初始化定时器
    TimeRecord = new QTime(0, 0, 0); //初始化时间

    ui->Timer->setDigitCount(8);
    ui->Timer->setSegmentStyle(QLCDNumber::Flat);
    ui->Timer->display(TimeRecord->toString("hh:mm:ss"));

    QPixmap pixStart(":/start.png");
    startIcon = new QIcon(pixStart);
    QPixmap pixPause(":/pause.png");
    pauseIcon = new QIcon(pixPause);
    QPixmap pixStop(":/stop.png");
    stopIcon = new QIcon(pixStop);

    ui->Start->setIcon(*startIcon);
    ui->Start->show();
    ui->Stop->setIcon(*stopIcon);
    ui->Stop->show();

    connect(timer,SIGNAL(timeout()),this,SLOT(updateTime()));
}

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

void MainWindow::updateTime()
{
    *TimeRecord = TimeRecord->addSecs(1);
    ui->Timer->display(TimeRecord->toString("hh:mm:ss"));
}

void MainWindow::on_Start_clicked()
{
    if(!isStart) //尚未开始 开始计时
    {
        ui->Start->setIconSize(QSize(70,70));
        ui->Start->setIcon(*pauseIcon);
        ui->Start->show();
        timer->start(1000);

    }
    else //已经开始,暂停
    {
        ui->Start->setIcon(*startIcon);
        ui->Start->show();
        timer->stop();
    }
    isStart = !isStart;

}

void MainWindow::on_Stop_clicked()
{
    timer->stop();    //计时器停止
    TimeRecord->setHMS(0,0,0); //时间设为0
    ui->Timer->display(TimeRecord->toString("hh:mm:ss")); //显示00:00:00
    isStart = false;
}

main.cpp 没改过

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

具体的难点是在发布的时候,点击生成的EXE总是运行不了。结果发现需要把所有用到的动态链接库都拷到exe的文件夹里。

下一个DLLShow可以显示程序运行所用到的所有的链接库,把用到的库拷到一起就好了。还下了一个ProcessExplorer也是同样的用途,看起来会更数目一点。

使用DLLShow的时候会像下图这样:

用ProcessExplorer像下图这样:

时间: 2024-10-05 06:27:52

【QT】计时器制作的相关文章

QT程序制作deb包并安装在应用程序菜单

制作原理:打包:将QT制作的源程序(没有编译的)用debian压缩打包(这里是用脚本对源程序再编译)安装:将deb包中的源程序解压(默认解压到根目录)到规定系统文件中并编译(postinst脚本)卸载:将解压的所有文件删除(postrm脚本)例子:1.新建deb包文件myded|——mydeb     |————application           |——addressbook(此目录存放QT的源程序和configure脚本)           |————lib             

基于Qt Assistant制作软件帮助文档

Qt Assistant是Qt自带的一款可定制.可重新发行的帮助文件浏览器.Qt Assistant支持HTML文件,用户可以利用其定制自己的功能强大的帮助文档浏览器.关于Qt Assistant定制的资料主要是Qt Assistant自身所带的英文文档,虽然讲解比较详细,但是对于初学者来说难以快速的入手.因此结合具体实践,对Qt Assistant定制的过程进行整理,希望对他人能有所启发. 定制过程中用到qhp,qch,qhcp,qhc四种不同格式的文件.对于这四种文件,初学者可能会经常混淆.

qt 计时器自动刷新图片

计时器 1 QTimer *timer; 2 timer->start (2000); 3 void PictureShow::stopStartPage() 4 { 5 if (timer->isActive()) 6 { 7 timer->stop(); 8 } 9 10 else 11 { 12 timer->start(); 13 } 14 } connect (timer, SIGNAL (timeout()), this, SLOT (nextPage())); dem

QT 自己制作IDE工具

项目创建 基类选择 项目文件 编译运行 项目文件1 mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QTextEdit>    //文本 #include <QMenu>        //加入菜单 #include <QMenuBar>     //加入菜单栏 #include <QAction>      //加入菜

Qt socket制作一个简单的文件传输系统

服务器 用qt designer设计出服务器界面: 上代码: Server.pro #------------------------------------------------- # # Project created by QtCreator 2017-02-02T09:56:26 # #------------------------------------------------- QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT

qt 制作含多个控件的列表

在qt中制作含有多个控件的列表: QListWidget *myListWidget = new QListWidget(); QMyItemWidget *myItem = new QMyItemWidget();//自定义窗体,根据需要添加相应的组件 QListWidgetItem item = new QListWidgetItem(); myListWidget->addItem(item); myListWidget->setItemWidget(item,myItem);

6.关于QT中的内存管理,动态的制作,动态库的调用,静态库的制作

 一  QT的内存管理 1  QT中的内存管理是QObject来管理的 2  QT中的内存管理没有cocos2dx中的引用计数 3  组件可以指定父对象 QTimer *timer = QTimer(this);   //这里的this实际上强制转换成为了QObject了. 4  每一个对象都有一个deleteLater()方法, QLineEdit* edit = new QLineEdit(this); delete edit;   //这里的delete马上调用析构函数对内存进行释放

关于qt学习的一点小记录

今日为了应付学校作业要求 决定现学qt来制作界面 毕竟c++不像在这方面c#可以那么方便 qt主要依靠信号.槽来实现类似winform中的消息 鉴于要尽快做完,故而没有细看qt 只是大概了解了下界面的制作方法 所以依然还有不少问题 好了我先从qt设计器开始了. 嗯,很好用的界面编辑器..一目了然啊~~~ 遇到的问题有: 1.槽明明在窗口类声明了,可设计器还是找不到... 解决:这个应该还需要在某些地方增加点代码,毕竟我find了一下别人demo的槽函数名字,发现出现在了好几个地方 嗯..这次时间

让Qt for Windows Phone 8.1在真机上运行

前面几篇博文是为这篇文章做铺垫的,最终目的为的是使用Qt框架制作出能够在Windows Phone 8.1真机上运行的程序.由于Qt for WP8这一块不完善,在加上我刚进入这一领域,所以研究的速度有点儿慢.在网上询问了Qt项目的维护者,加上自己的一点研究,稍微了解了Qt for Windows Phone 8的开发原理. 原创文章,反对未声明的引用.原博客地址:http://blog.csdn.net/gamesdev/article/details/38967749 使用Qt开发Windo