VisualStudio2019+QT5.14使用LcdNumber显示当前时间

1.创建一个工程:

文件-新建-项目 选择Qt GUI Application

 2.给项目命名,选择项目存储位置

 3.项目配置

点next

默认勾选Core , GUI ,Widgets 三项即可。点next

 如果想要将文件首字母小写,就勾选第一个选项:Lower Case file names。默认无需改动,点击finish,项目就创建完成了。

 4.解决方案结构如下:

 .ui 文件为画图工具,双击可以打开qt creator。

5.完整代码如下:

QTthread_practice.h

#pragma once

#include <QtWidgets/QMainWindow>
#include "ui_QTthread_practice.h"
#include"qtimer.h"
#include"qt_windows.h"
#include<time.h>

class QTthread_practice : public QMainWindow
{
	Q_OBJECT

public:
	QTthread_practice(QWidget* parent = Q_NULLPTR);
	QTimer* timer = new QTimer;
	~QTthread_practice()
	{
		delete timer;
	}
public slots:
	void lcdDisplay();//lcd显示
	void on_pushButton_clicked();

private:
	Ui::QTthread_practiceClass ui;
};

ui_QTthread_practice.h (如果在.ui中设置属性,这个文件自动生成,不需要自己写)

/********************************************************************************
** Form generated from reading UI file 'QTthread_practice.ui'
**
** Created by: Qt User Interface Compiler version 5.14.2
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/

#ifndef UI_QTTHREAD_PRACTICE_H
#define UI_QTTHREAD_PRACTICE_H

#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QLCDNumber>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QMenuBar>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QStatusBar>
#include <QtWidgets/QToolBar>
#include <QtWidgets/QWidget>

QT_BEGIN_NAMESPACE

class Ui_QTthread_practiceClass
{
public:
    QWidget *centralWidget;
    QLCDNumber *lcdNumber;
    QPushButton *pushButton;
    QMenuBar *menuBar;
    QToolBar *mainToolBar;
    QStatusBar *statusBar;

    void setupUi(QMainWindow *QTthread_practiceClass)
    {
        if (QTthread_practiceClass->objectName().isEmpty())
            QTthread_practiceClass->setObjectName(QString::fromUtf8("QTthread_practiceClass"));
        QTthread_practiceClass->resize(407, 194);
        centralWidget = new QWidget(QTthread_practiceClass);
        centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
        lcdNumber = new QLCDNumber(centralWidget);
        lcdNumber->setObjectName(QString::fromUtf8("lcdNumber"));
        lcdNumber->setGeometry(QRect(10, 0, 381, 91));
        lcdNumber->setProperty("value", QVariant(0.000000000000000));
        lcdNumber->setProperty("intValue", QVariant(0));
        pushButton = new QPushButton(centralWidget);
        pushButton->setObjectName(QString::fromUtf8("pushButton"));
        pushButton->setGeometry(QRect(150, 100, 92, 28));
        QTthread_practiceClass->setCentralWidget(centralWidget);
        menuBar = new QMenuBar(QTthread_practiceClass);
        menuBar->setObjectName(QString::fromUtf8("menuBar"));
        menuBar->setGeometry(QRect(0, 0, 407, 26));
        QTthread_practiceClass->setMenuBar(menuBar);
        mainToolBar = new QToolBar(QTthread_practiceClass);
        mainToolBar->setObjectName(QString::fromUtf8("mainToolBar"));
        QTthread_practiceClass->addToolBar(Qt::TopToolBarArea, mainToolBar);
        statusBar = new QStatusBar(QTthread_practiceClass);
        statusBar->setObjectName(QString::fromUtf8("statusBar"));
        QTthread_practiceClass->setStatusBar(statusBar);

        retranslateUi(QTthread_practiceClass);
        QObject::connect(pushButton, SIGNAL(clicked()), QTthread_practiceClass, SLOT(on_pushButton_clicked()));
        QObject::connect(lcdNumber, SIGNAL(overflow()), QTthread_practiceClass, SLOT(lcdDisplay_on()));

        QMetaObject::connectSlotsByName(QTthread_practiceClass);
    } // setupUi

    void retranslateUi(QMainWindow *QTthread_practiceClass)
    {
        QTthread_practiceClass->setWindowTitle(QCoreApplication::translate("QTthread_practiceClass", "QTthread_practice", nullptr));
        pushButton->setText(QCoreApplication::translate("QTthread_practiceClass", "\345\274\200\345\247\213", nullptr));
    } // retranslateUi

};

namespace Ui {
    class QTthread_practiceClass: public Ui_QTthread_practiceClass {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_QTTHREAD_PRACTICE_H

QTthread_practice.cpp

#include "QTthread_practice.h"
#include <QDateTimeEdit>

QTthread_practice::QTthread_practice(QWidget* parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);

	//设置lcdDisplay的属性
	ui.lcdNumber->setDigitCount(10); //设置晶体管控件QLCDNumber能显示的位数
	ui.lcdNumber->setMode(QLCDNumber::Dec);//设置显示的模式为十进制
	ui.lcdNumber->setSegmentStyle(QLCDNumber::Flat);//设置显示方式

	//信号和槽
	//connect(timer, SIGNAL(timeout()), this, SLOT(lcdDisplay()));

	connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(on_pushButton_clicked()));
}

//lcdDisplay开始显示
void QTthread_practice::lcdDisplay()
{
	//获取系统当前时间
	QTime time = QTime::currentTime();
	//设置晶体管控件QLCDNumber上显示的内容
	ui.lcdNumber->display(time.toString("hh:mm:ss"));
}
void QTthread_practice::on_pushButton_clicked()
{
	//新建一个QTimer对象
	//设置定时器每个多少毫秒发送一个timeout()信号
	timer->setInterval(1000);
	//启动定时器
	timer->start();
	connect(timer, SIGNAL(timeout()), this, SLOT(lcdDisplay()));
}

main.cpp  (默认生成,无需改动)

#include "QTthread_practice.h"
#include <QtWidgets/QApplication>

int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	QTthread_practice w;
	w.show();
	return a.exec();
}

运行结果如下:


版权声明:本文为merenguesl原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。