太空人表盘小制作


前段时间网络上比较火的太空人表盘,看着好多人都发挥自己的创意制作了各种各样的样式。于是我打算用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