您的位置:首頁 > 教程 > C語言教程 > Qt實現電子時鐘的示例代碼

Qt實現電子時鐘的示例代碼

2022-06-18 17:54:49 來源:易采站長站 作者:

Qt實現電子時鐘的示例代碼

目錄
一、項目介紹二、項目基本配置三、UI界面設計四、主程序實現4.1 添加新文件4.2 digiclock.h頭文件4.3 digiclock.cpp源文件4.4 main.cpp源文件五、效果演示

Jun站長之家-易采站長站-Easck.Com

一、項目介紹

利用Qt實現顯示與桌面上并可以隨意拖拽至桌面任意位置的電子時鐘案例。Jun站長之家-易采站長站-Easck.Com

Jun站長之家-易采站長站-Easck.Com

Jun站長之家-易采站長站-Easck.Com

二、項目基本配置

新建一個Qt案例,項目名稱為“Clock”,基類選擇“QDialog”,取消創建UI界面復選框的選中狀態。Jun站長之家-易采站長站-Easck.Com

Jun站長之家-易采站長站-Easck.Com

Jun站長之家-易采站長站-Easck.Com

三、UI界面設計

無UI界面Jun站長之家-易采站長站-Easck.Com

Jun站長之家-易采站長站-Easck.Com

四、主程序實現

Jun站長之家-易采站長站-Easck.Com

4.1>

添加新文件:Jun站長之家-易采站長站-Easck.Com

Jun站長之家-易采站長站-Easck.Com

選擇“C++ Class”選項,單擊“Choose”按鈕,選擇“Base class”文本框中輸入基類名“QLCDNumber”(手動添加),在“Class name”文本框中輸入類的名稱“DigiClock”:Jun站長之家-易采站長站-Easck.Com

Jun站長之家-易采站長站-Easck.Com

Jun站長之家-易采站長站-Easck.Com

4.2>

代碼如下:Jun站長之家-易采站長站-Easck.Com

#ifndef DIGICLOCK_H
#define DIGICLOCK_H

#include <QLCDNumber>

class DigiClock : public QLCDNumber
{
    Q_OBJECT
public:
    DigiClock(QWidget *parent=0);
    void mousePressEvent(QMouseEvent *);
    void mouseMoveEvent(QMouseEvent *);

public slots:
    void showTime();    //顯示當前時間

private:
    QPoint dragPosition;  //保存鼠標點相對電子時鐘窗體左上角的偏移量
    bool showColon;       //用于顯示時間時是否顯示:
};

#endif // DIGICLOCK_H

Jun站長之家-易采站長站-Easck.Com

4.3>

首先,DigiClock類繼承自QLCDNumber類:Jun站長之家-易采站長站-Easck.Com

DigiClock::DigiClock(QWidget *parent):QLCDNumber(parent)
{
//設置時鐘背景
QPalette p=palette();//定義調色板對象
p.setColor(QPalette::Window,Qt::blue);//設置背景顏色為藍色
setPalette(p);//啟用調色板對象
setWindowFlags(Qt::FramelessWindowHint);//生成無邊界窗口
setWindowOpacity(0.5);//設置窗體透明度為0.5
QTimer *timer=new QTimer(this);//新建定時器對象
connect(timer,SIGNAL(timeout()),this,SLOT(showTime()));//連接定時器地timeout()信號與顯示時間的槽信號showTime()
timer->start(1000);//啟動定時器(每隔1000ms啟動一次)
showTime();//初始時間顯示
resize(150,60);//設置電子時鐘顯示的尺寸
showColon=true;//初始化

}

然后定義槽函數showTime(),完成電子鐘的顯示時間功能:Jun站長之家-易采站長站-Easck.Com

//槽函數showTime()
void DigiClock::showTime()
{
    QTime time=QTime::currentTime();    //獲取當前系統時間
    QString text=time.toString("hh:mm");//獲取的當前時間轉換為字符串類型
    if(showColon)                        //控制:閃爍
    {
        text[2]=':';
        showColon=false;
    }
    else
    {
        text[2]=' ';
        showColon=true;
    }
    display(text);    //顯示轉換好的字符串時間
}

接著,定義鼠標按下事件響應函數:Jun站長之家-易采站長站-Easck.Com

//鼠標按下事件響應函數
void DigiClock::mousePressEvent(QMouseEvent *event)
{
    if(event->button()==Qt::LeftButton) //判斷按下鍵是否為鼠標左鍵
    {
        //dragPosition=event->globalPos()-frameGeometry().topLeft();
        dragPosition=event->pos();//兩種方法
        //event->accept();//接收事件
    }
    if(event->button()==Qt::RightButton)    //若按下鍵為鼠標右鍵
    {
        close();//退出
    }
}

定義鼠標移動事件響應函數,實現拖拽功能:Jun站長之家-易采站長站-Easck.Com

//鼠標移動響應函數
void DigiClock::mouseMoveEvent(QMouseEvent *event)
{
    if(event->buttons()&Qt::LeftButton)
    {
        move(event->globalPos()-dragPosition);
        //event->accept();//接收事件
    }
}

Jun站長之家-易采站長站-Easck.Com

4.4>

代碼如下:Jun站長之家-易采站長站-Easck.Com

#include "dialog.h"
#include <QApplication>
#include"digiclock.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    DigiClock clock;
    clock.show();
//    Dialog w;
//    w.show();
    return a.exec();
}

Jun站長之家-易采站長站-Easck.Com

五、效果演示

Jun站長之家-易采站長站-Easck.Com

到此這篇關于Qt實現電子時鐘的示例代碼的文章就介紹到這了,更多相關Qt電子時鐘內容請搜索易采站長站以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持易采站長站!Jun站長之家-易采站長站-Easck.Com

如有侵權,請聯系QQ:279390809 電話:15144810328

相關文章

  • VS2019項目打包生成.exe文件與Setup的步驟實現

    VS2019項目打包生成.exe文件與Setup的步驟實現

    對于Visual Studio Installer ,我們通常稱為:setup項目,是一個用于自定義安裝部署的項目方案。但是在VS2019中不見了,微軟是有意廢除安裝項目的,合作了一個第三方的安裝項目單獨使用。
    2020-03-13
  • 基于c++ ege圖形庫實現五子棋游戲

    基于c++ ege圖形庫實現五子棋游戲

    本文分享的五子棋實例,制作基于ege圖像庫, 首先需要安裝配置ege環境 就可以編寫小游戲了. 用到的ege庫函數不多 , 主要是基于c++的. 先看界面效果: 輸入界面:(就是控制臺) 游戲勝利界面
    2020-01-06
  • C++基于easyx圖形庫實現推箱子游戲

    C++基于easyx圖形庫實現推箱子游戲

    本文實例為大家分享了C++實現推箱子游戲的具體代碼,供大家參考,具體內容如下 頭文件: #includestdio.h#includestdlib.h//#includeWindows.h#includeconio.h#includegraphics.h#includestdbool.h //播放音樂需要
    2020-06-30
  • VS2019 Nuget找不到包的問題處理

    VS2019 Nuget找不到包的問題處理

    VS不記得改了什么設置之后,發現找不到EF 解決辦法 1、點擊右側的設置按鈕 2、彈出窗中左側樹形結構選擇“程序包源”,再點擊右上方的添加按鈕 輸入一下信息:https://www.nuget.org/a
    2020-03-27
  • visual studio2019的安裝以及使用圖文步驟詳解

    visual studio2019的安裝以及使用圖文步驟詳解

    一、下載安裝包 下載地址 選擇visual studio 2019的community版本 二、下載好后運行 三、組件的選擇 如果是用來學CC++的話,選擇以下兩個就夠了 之后如果還需要其他一些功能的話,可以后
    2020-03-08
  • VScode編譯C++ 頭文件顯示not found的問題

    VScode編譯C++ 頭文件顯示not found的問題

    一直用codeblocks,想試試vscode,結果這個問題給我弄懵逼了。一開始以為是iostream這個頭文件not found,后來發現第一個頭文件都會這樣顯示,放到后面就不會了,然而,光這一個顯示not
    2020-03-20
  • C++多線程獲取返回值方法詳解

    C++多線程獲取返回值方法詳解

    在許多時候,我們會有這樣的需求——即我們想要得到線程返回的值。但是在C++11 多線程中我們注意到,std::thread對象會忽略頂層函數的返回值。 那問題來了,我們要怎么獲得線程的返
    2020-06-25
  • JVM系列之String.intern的性能解析

    JVM系列之String.intern的性能解析

    String對象有個特殊的StringTable字符串常量池,為了減少Heap中生成的字符串的數量,推薦盡量直接使用String Table中的字符串常量池中的元素。 那么String.intern的性能怎么樣呢?我們一起來
    2020-06-23
色七七影院_香港三级台湾三级在线播放_男人放进女人阳道猛进猛出