zoukankan      html  css  js  c++  java
  • 太空人表盘小制作

    前段时间网络上比较火的太空人表盘,看着好多人都发挥自己的创意制作了各种各样的样式。于是我打算用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();
    }
    四、运行后就能看到效果了



  • 相关阅读:
    Spring Boot 2.1.10 学习笔记(2)
    Spring Boot 2.1.10 学习笔记(1)
    Win10 下载与激活 MSDN
    Java JDK 1.8 下载及其版本说明 8u202(最后一个免费版)
    shell函数开发意见优化系统脚本
    php大文件下载支持断点续传
    xunsearch使用笔记
    微信使用的curl方法
    php执行sql语句打印结果
    二维数组排序:array_orderby(php官网评论)
  • 原文地址:https://www.cnblogs.com/jiayezi/p/14600758.html
Copyright © 2011-2022 走看看