• QT入门


    QT += core gui widgets //引入需要用到的库

    qDebug()<<"t="<<t<<QTime::currentTime();//在控制台输出当前时间

    label->setStyleSheet("background:red; border-radius:25px");//设置样式表

    label->setFont(QFont("宋体",20));//设置标签的字体及大小

    ctrl + i 格式化代码

    F4在cpp文件和h文件之间切换

    signal函数和slot函数都是void类型的


    wKioL1NoqHWBkTMiAABR_mkxCvc278.jpg

    mainwindow.h

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    #include "QTimer"
    #include "QLabel"
    #include <QWidget>
    class MainWindow : public QWidget
    {
        Q_OBJECT
    public:
        explicit MainWindow(QWidget *parent = 0);
    signals:
    public slots:
        void slotTimeout();
    private:
        QTimer timer;//定义全局变量
        QLabel *label;
        int t = 0;
    };
    #endif // MAINWINDOW_H

    mainwindow.cpp

    #include "mainwindow.h"
    #include "QString"
    #include "QFont"
    MainWindow::MainWindow(QWidget *parent) :
        QWidget(parent)
    {
        this->setGeometry(200,200,600,400);
        label = new QLabel(this);//将标签添加到当前的mainwindow中
        label->setGeometry(10,10,230,20);//设置标签的位置及大小
        label->setFont(QFont("宋体",20));//设置标签的字体及大小
    //    connect(&timer,SIGNAL(timeout()),this,SLOT(close()));
        connect(&timer,SIGNAL(timeout()),this,SLOT(slotTimeout()));
    //信号...槽
    //    t = 0;//这句注释掉,因为在mainwindow.h中已经初始化
        timer.start(10);//每10毫秒触发一次
    }
    void MainWindow::slotTimeout(){
        t++;
        label->setText(QString::number(t));
    }

    main.cpp

    #include "QApplication"
    //#include "QMainWindow"
    #include "mainwindow.h"
    int main(int argc, char *argv[]){
        QApplication a(argc, argv);
        MainWindow w;
        w.show();
        return a.exec();
    }


    wKioL1NoqZ6iYgJnAABwFN78vQQ471.jpg


    QFile::exists("/chord.wav") ? qDebug()<<"chemin ok" : qDebug()<<"chemin faux";
    QString dir=QCoreApplication ::applicationDirPath();
    QString filename(dir+"/chord.wav");
    QSound::play ( filename );//播放声音


    发出信号,现在头文件中定义

    signals:
        void signalTimeToDoSth();//自定义信号在

    在必要的时候发出信号

    if(t == 100){
        emit signalTimeToDoSth();//发出信号
    }

    connect(this,SIGNAL(signalTimeToDoSth()),this,SLOT(slotTimeToDoSth()));

    链接槽函数响应该信号。此处省略槽函数的具体写法。

    QT用LCD方式显示时间

    先在头文件定义

    QLCDNumber *shizhong;
    QVBoxLayout *layout;
    QTimer timer1;//定义全局变量

    shizhong = new QLCDNumber(this);
    shizhong -> setFont(QFont("宋体",50));
    shizhong-> move(420,30);
    shizhong -> resize(90,40);
    shizhong->setDigitCount(10);
    shizhong->setMode(QLCDNumber::Dec);//十进制显示
    shizhong->setSegmentStyle(QLCDNumber::Flat);//显示方式
    layout = new QVBoxLayout();
    layout->addWidget(shizhong);
    timer1.start(1000) ;
    QObject::connect(&timer1, SIGNAL(timeout()), this, SLOT(onTimerOut()));

    槽函数

    void MainWindow::onTimerOut()
    {
        QTime time = QTime::currentTime();
        shizhong -> display(time.toString("hh:mm:ss"));
    }

    格式化显示时间

    QString s;
    QString r = s.sprintf("%02d:%02d:%02d",t/3600,t/60%60,t%60);
    label->setText(r);


    圆角矩形显示label

    label->setStyleSheet("background:#f69; border-radius:25px");
    label->setFixedSize(250, 50);

    wKiom1NspQSTzvJsAAAh3XD9rL8157.jpg


    小球碰撞边界检测算法

    void MainWindow::slotMove()
    {
        if(flagx == 0)
            x++;
        else
            x--;
        if(x + label->width() >= this->width())
        {
            flagx = 1;//It's time to move to the right derection
        }
        else if(x <= 0)
        {
            flagx = 0;//It's time to move to the left derection
        }
        if(flagy == 0)
            y++;
        else
            y--;
        if(y + label->height() >= this->height())
        {
            flagy = 1;//向上
        }
        else if(y <= 0)
        {
            flagy = 0;//向下
        }
        label->move(x,y);
    }


    本文出自 “阿凡达” 博客,请务必保留此出处http://shamrock.blog.51cto.com/2079212/1407300

  • 相关阅读:
    Vue2.1.7源码学习
    JavaScript 复制对象【Object.assign方法无法实现深复制】
    数组去重你知道几种?
    基于webpack2.x的vue2.x的多页面站点
    欲练JS,必先攻CSS——前端修行之路
    闭包的7种形式
    遇见未知的CSS
    redux 个人整理
    log4j.properties打印日志信息(1)
    Java Web开发之Servlet、JSP基础
  • 原文地址:https://www.cnblogs.com/umgsai/p/3908090.html
Copyright © 2020-2023  润新知