太空人表盤小制作


前段時間網絡上比較火的太空人表盤,看着好多人都發揮自己的創意制作了各種各樣的樣式。於是我打算用QT也制作一個太空人表盤。

由於僅僅是做着玩的,所以沒有什么很復雜的功能。具體的原理可以理解成一個電子時鍾,只是UI稍微華麗了一點而已。看看我的制作

過程吧!

寫代碼之前先使用PS手動畫一個表盤,如下:

 

 

 

准備好旋轉的太空人,如下:

一、創建一個繼承與QWidget的工程。

二、在UI里設置背景和擺放好需要使用的控件位置

 

 三、開始編寫C++代碼

---------------------------------------------------------widget.h-------------------------------------------------------------

#ifndef WIDGET_H
#define WIDGET_H
 
        
#include <QWidget>
#include <QTime>
#include <QTimer>
#include <QMovie>
#include <QDateTime>
 
        
namespace Ui {
class Widget;
}
 
        
class Widget : public QWidget
{
    Q_OBJECT
 
        
public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();
public slots:
    void show_time();
private:
    Ui::Widget *ui;
    bool showColon;
};
 
        
#endif // WIDGET_H



---------------------------------widget.cpp-----------------------------------------
#include "widget.h"
#include "ui_widget.h"
 
        
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    this->setFixedSize(500,500);
 
        
    QPixmap pixmap(":/表盤.png");
    QPalette palette = this->palette();
    palette.setBrush(QPalette::Background,QBrush(pixmap));
    this->setPalette(palette);
 
        
    ui->lcdNumber->setFrameStyle(QFrame::NoFrame | QFrame::Raised);
    ui->lcdNumber->setSegmentStyle(QLCDNumber::Flat);
    ui->lcdNumber->setDigitCount(5);
 
        
    ui->lcdNumber_2->setFrameStyle(QFrame::NoFrame | QFrame::Raised);
    ui->lcdNumber_2->setSegmentStyle(QLCDNumber::Flat);
    ui->lcdNumber_2->setDigitCount(2);
 
        
    ui->lcdNumber_3->setFrameStyle(QFrame::NoFrame | QFrame::Raised);
    ui->lcdNumber_3->setSegmentStyle(QLCDNumber::Flat);
    ui->lcdNumber_3->setDigitCount(5);
 
        
    QTimer *timer = new QTimer();
    timer->setInterval(1000);
    timer->start();
    connect(timer,SIGNAL(timeout()),this,SLOT(show_time()));
 
        
    ui->label->setFixedSize(89,100);
    QMovie *movie = new QMovie(":/2 (2).gif");
    ui->label->setMovie(movie);
    movie->start();
 
        
}
 
        
void Widget::show_time()
{
    QDateTime time = QDateTime::currentDateTime();
    QString text = time.toString("hh:mm");
    QString text1 = time.toString("ss");
    QString text2 = time.toString("MM-dd");
    QString text3 = time.toString("ddd");
    if(showColon)
    {
        text[2]=':';
        showColon=false;
    }
    else
    {
        text[2]=' ';
        showColon=true;
    }
 
        
    ui->lcdNumber->display(text);
    ui->lcdNumber_2->display(text1);
    ui->lcdNumber_3->display(text2);
    ui->label_2->setText(text3);
}
 
        
Widget::~Widget()
{
    delete ui;
}
 
        
---------------------------------------------main.cpp--------------------------------------
#include "widget.h"
#include <QApplication>
 
        
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
 
        
    return a.exec();
}
四、運行后就能看到效果了

 

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM