QT學習 實時顯示時間

Easadon發表於2020-08-26

今天完成一個實時顯示時間的小demo

先上DJ先上DJ

先看一下效果

以兩種形式顯示當前具體時間

 先附上程式碼,再總結一下核心程式碼

(1) myweather.ui檔案

建立一個Label,ObjectName值為text;建立一個LCD Number,ObjectName為lcd。

分別用於兩種形式的顯示

           

(2) myweather.h檔案

#ifndef MYWEATHER_H
#define MYWEATHER_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MyWeather; }
QT_END_NAMESPACE

class MyWeather : public QMainWindow
{
    Q_OBJECT

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

private:
    Ui::MyWeather *ui;
public slots:
    void timerUpdata(void);
};
#endif // MYWEATHER_H

這裡宣告瞭一個槽函式,用於處理 時間顯示事件

(3)myweather.cpp

#include "myweather.h"
#include "ui_myweather.h"
#include <QFont>
#include <QTime>
#include <QTimer>
#include <qdatetime.h>
MyWeather::MyWeather(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MyWeather)
{
    ui->setupUi(this);
    QTimer *timer = new QTimer(this);
    connect(timer,SIGNAL(timeout()),this,SLOT(timerUpdata()));
    timer->start(1000);
}

MyWeather::~MyWeather()
{
    delete ui;
}
void MyWeather::timerUpdata()
{
    QFont font("Microsoft YaHei",20,50);
    QDateTime time = QDateTime::currentDateTime();
    QString str = time.toString("yyyy-MM-dd hh:mm:ss dddd");
    QString str1 = time.toString("yyyy-MM-dd hh:mm:ss");
    ui -> text ->setFont(font);
    this -> ui->text->setText(str);
    //ui->text->show();
    ui -> lcd -> display(str1);
}

涉及知識點:

a. 訊號和槽

使用connect()函式,建立訊號和槽的相對應關係

(connect()函式的寫法有三種,具體的話自己可以查一下,與QT的版本有關,不用拘泥於特定的形式)

b.定時器

QTimer為QT中的一個定時器類,timer->start(1000)用於設定定時器的定時週期為1000ms,設定之後,每1000ms就會發射定時器的timeout()訊號,那麼在connect()函式中建立起關聯的槽函式,就會在每次訊號觸發時進行相應的工作

c. QFont

用於控制QT控制元件的文字屬性,具體用法可自行搜尋,這裡對用到的屬性做簡單介紹

d.QDateTime

QDateTime::currentDateTime();//獲取系統現在的時間

QFont font ( “Microsoft YaHei”, 20, 50); 
//第一個屬性是字型(微軟雅黑),第二個是大小,第三個是加粗(權重是75)
ui->label->setFont(font);

常見權重
QFont::Light - 25 高亮
QFont::Normal - 50 正常
QFont::DemiBold - 63 半粗體
QFont::Bold - 75 粗體
QFont::Black - 87 黑體

(4)main.cpp

#include "myweather.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MyWeather w;
    w.setWindowTitle("實時時鐘系統");
    w.show();
    return a.exec();
}

大概內容就這樣了,see you nala

相關文章