Qt 一个获得整数的项目

4 篇文章 0 订阅

1.项目环境:qt 5.14     win10

2.项目功能:随机整数,累加数据,累减数据,固定数据,时间戳数据

3.运行结果:

 

4.Widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QGroupBox>
#include <QLineEdit>
#include <QPushButton>
#include <QLabel>
#include <QDebug>
#include <QRadioButton>
#include <QStackedWidget>
#include <QButtonGroup>
#include <QTime>
#include <QTimer>
#include <QIntValidator>
#include <QMessageBox>
#include <QCompleter>
#include <QSpinBox>
#pragma execution_character_set("utf-8") //支持中文

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
private:
    void create_Widget();
    QPushButton *btn1;
    QPushButton *btn2;
    QPushButton *btn3;

    QRadioButton *radio1;
    QRadioButton *radio2;
    QRadioButton *radio3;
    QRadioButton *radio4;
    QRadioButton *radio5;

    QLabel *label_out;
    QLineEdit *qle_out;

    int max_value=10;
    int min_value=0;
    int refresh_rate=1000;
    int step_value=1;
    int result=0;

    int out_value = 0;//输出值初始化为0,以免报错。

    QStackedWidget *stackedWidget;

    QWidget *page1;
    QWidget *page2;
    QWidget *page3;

    QButtonGroup *groupButton;

    QTimer *mytimer;

    void timerStart();

    QLineEdit *ql1;
    QLineEdit *ql2;
    QSpinBox *Spin3;

    QLineEdit *ql4;
    QLineEdit *ql5;
    QSpinBox *Spin6;
    QLabel *lab7;
    QSpinBox *Spin7;


    void Generate_number1();
    void Generate_number2();
    void Generate_number3();
    void Generate_number4();
    void Generate_number5();

private slots:
    void on_radioButton_clicked();
    void Generate_number();


    void onMaxValueChange(QString);
    void onMinValueChange(QString);
    void onRFValueChange(int);
    void onStepValueChange(int);


};
#endif // WIDGET_H

Widget.cpp

#include "widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    create_Widget();

    timerStart();

    connect(mytimer,SIGNAL(timeout()),this,SLOT(Generate_number()));

    connect(radio1,SIGNAL(clicked(bool)),this,SLOT(on_radioButton_clicked()));
    connect(radio2,SIGNAL(clicked(bool)),this,SLOT(on_radioButton_clicked()));
    connect(radio3,SIGNAL(clicked(bool)),this,SLOT(on_radioButton_clicked()));
    connect(radio4,SIGNAL(clicked(bool)),this,SLOT(on_radioButton_clicked()));
    connect(radio5,SIGNAL(clicked(bool)),this,SLOT(on_radioButton_clicked()));

    connect(ql1,SIGNAL(textChanged(QString)),this,SLOT(onMaxValueChange(QString)));
    connect(ql2,SIGNAL(textChanged(QString)),this,SLOT(onMinValueChange(QString)));
    connect(Spin3,SIGNAL(valueChanged(int)),this,SLOT(onRFValueChange(int)));


    connect(ql4,SIGNAL(textChanged(QString)),this,SLOT(onMaxValueChange(QString)));
    connect(ql5,SIGNAL(textChanged(QString)),this,SLOT(onMinValueChange(QString)));
    connect(Spin6,SIGNAL(valueChanged(int)),this,SLOT(onRFValueChange(int)));
    connect(Spin7,SIGNAL(valueChanged(int)),this,SLOT(onStepValueChange(int)));





}

Widget::~Widget()
{
}

void Widget::create_Widget()
{
    this->setFixedSize(600,500);
    QGroupBox *groupBox = new QGroupBox(tr("请输入参数的值"));
    groupBox->setParent(this);
    groupBox->setGeometry(50,20,500,400);

    radio1 = new QRadioButton(groupBox);
    radio1->setText("随机数据");
    radio1->move(50,50);
    //radio1->setChecked(true);//默认当选项

    radio2 = new QRadioButton(groupBox);
    radio2->setText("累加数据");
    radio2->move(50,120);

    radio3 = new QRadioButton(groupBox);
    radio3->setText("累减数据");
    radio3->move(50,190);

    radio4 = new QRadioButton(groupBox);
    radio4->setText("固定数据");
    radio4->move(50,260);

    radio5 = new QRadioButton(groupBox);
    radio5->setText("时间戳");
    radio5->move(50,330);


    groupButton = new QButtonGroup();
    groupButton->addButton(radio1,0);
    groupButton->addButton(radio2,1);
    groupButton->addButton(radio3,2);
    groupButton->addButton(radio4,3);
    groupButton->addButton(radio5,4);
    radio1->setChecked(true);


    label_out = new QLabel(groupBox);
    label_out->setGeometry(200,330,100,30);
    label_out->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
    label_out->setText("输出值:");

    qle_out= new QLineEdit(groupBox);
    qle_out->setGeometry(310,330,150,30);
    qle_out->setReadOnly(true);//只做显示禁止编辑


    stackedWidget = new QStackedWidget(groupBox);
    stackedWidget->setGeometry(200,50,280,250);
    //stackedWidget->setStyleSheet("background-color:gray");
    //stackedWidget->setStyleSheet("background:transparent;border:2px solid gray;");

    page1 = new QWidget();
    stackedWidget->addWidget(page1);

    QLabel *lab1 = new QLabel(page1);
    lab1->setText("最大值:");
    lab1->setGeometry(20,20,100,30);
    lab1->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
    lab1->setStyleSheet("background:transparent;border:0px solid gray;");

    ql1 = new QLineEdit(page1);
    ql1->setGeometry(130,20,120,30);
    ql1->setText(QString::number(max_value));


    QLabel *lab2 = new QLabel(page1);
    lab2->setText("最小值:");
    lab2->setGeometry(20,70,100,30);
    lab2->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
    lab2->setStyleSheet("background:transparent;border:0px solid gray;");

    ql2 = new QLineEdit(page1);
    ql2->setGeometry(130,70,120,30);
    ql2->setText(QString::number(min_value));

    QLabel *lab3 = new QLabel(page1);
    lab3->setText("刷新率:");
    lab3->setGeometry(20,120,100,30);
    lab3->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
    lab3->setStyleSheet("background:transparent;border:0px solid gray;");


    Spin3 = new QSpinBox(page1);
    Spin3->setMaximum(1000);
    Spin3->setMinimum(10);
    Spin3->setSingleStep(10);
    //Spin1->setValue(1000);
    Spin3->setValue(refresh_rate);
    Spin3->setGeometry(130,120,120,30);





    //
    page2 = new QWidget();
    stackedWidget->addWidget(page2);

    QLabel *lab4 = new QLabel(page2);
    lab4->setText("最大值:");
    lab4->setGeometry(20,20,100,30);
    lab4->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
    lab4->setStyleSheet("background:transparent;border:0px solid gray;");

    ql4 = new QLineEdit(page2);
    ql4->setGeometry(130,20,120,30);
    ql4->setText(QString::number(max_value));


    QLabel *lab5 = new QLabel(page2);
    lab5->setText("最小值:");
    lab5->setGeometry(20,70,100,30);
    lab5->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
    lab5->setStyleSheet("background:transparent;border:0px solid gray;");

    ql5 = new QLineEdit(page2);
    ql5->setGeometry(130,70,120,30);
    ql5->setText(QString::number(min_value));

    QLabel *lab6 = new QLabel(page2);
    lab6->setText("刷新率:");
    lab6->setGeometry(20,120,100,30);
    lab6->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
    lab6->setStyleSheet("background:transparent;border:0px solid gray;");


    Spin6 = new QSpinBox(page2);
    Spin6->setMaximum(1000);
    Spin6->setMinimum(10);
    Spin6->setSingleStep(10);
    //Spin1->setValue(1000);
    Spin6->setValue(refresh_rate);
    Spin6->setGeometry(130,120,120,30);


    lab7 = new QLabel(page2);
    lab7->setText("每次加值:");
    lab7->setGeometry(20,170,100,30);
    lab7->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
    lab7->setStyleSheet("background:transparent;border:0px solid gray;");


    Spin7 = new QSpinBox(page2);
    Spin7->setMaximum(9999);
    Spin7->setMinimum(0);
    Spin7->setSingleStep(1);
    Spin7->setValue(step_value);
    Spin7->setGeometry(130,170,120,30);


    //
    //空页面
    //
    page3 = new QWidget();
    stackedWidget->addWidget(page3);


}

void Widget::timerStart(){
    mytimer = new QTimer(this);
    mytimer->start(refresh_rate);
    //mytimer->start(refresh_rate);
}



void Widget::on_radioButton_clicked(){
    switch (groupButton->checkedId())
    {
    case 0:
        stackedWidget->setCurrentIndex(0);
        ql1->setText(QString::number(max_value));
        ql2->setText(QString::number(min_value));
        Spin3->setValue(refresh_rate);
        break;
    case 1:
        stackedWidget->setCurrentIndex(1);
        lab7->setText("每次加值:");
        ql4->setText(QString::number(max_value));
        ql5->setText(QString::number(min_value));
        Spin6->setValue(refresh_rate);
        Spin7->setValue(step_value);
        break;
    case 2:
        stackedWidget->setCurrentIndex(1);
        lab7->setText("每次减值:");
        ql4->setText(QString::number(max_value));
        ql5->setText(QString::number(min_value));
        Spin6->setValue(refresh_rate);
        Spin7->setValue(step_value);
        break;
    case 3:
        stackedWidget->setCurrentIndex(2);
        break;
    case 4:
        stackedWidget->setCurrentIndex(2);
        break;

    }
}


void Widget::onMaxValueChange(QString value){
    if(!value.isEmpty()){
        //qDebug()<<"null";
        max_value = value.toInt();
    }



}

void Widget::onMinValueChange(QString value){
    if(!value.isEmpty()){
        //qDebug()<<"null";
        min_value = value.toInt();
    }
}

void Widget::onRFValueChange(int value){
   //限定刷新率的范围10--1000整数,否则不改变

    refresh_rate = value;
    mytimer->start(refresh_rate);

}

void Widget::onStepValueChange(int value){
   step_value = value;
}




void Widget::Generate_number(){

    switch (groupButton->checkedId())
    {
    case 0:
        Generate_number1();
        break;
    case 1:
        Generate_number2();
        break;
    case 2:
        Generate_number3();
        break;
    case 3:
        Generate_number4();
        break;
    case 4:
        Generate_number5();
        break;

    }

}

void Widget::Generate_number1()
{

    qDebug()<<"随机整数";
    qDebug()<<"max_value:"<<max_value;
    qDebug()<<"min_value:"<<min_value;
    qDebug()<<"refresh_rate:"<<refresh_rate;
    qDebug()<<"step_value:"<<step_value;
    //int refresh_rate=1000;
    //int step_value=1;
    qsrand(QTime::currentTime().msec()*qrand()*qrand()*qrand()*qrand()*qrand()*qrand());
    result = qrand()%(max_value-min_value)+min_value;
    qle_out->setText(QString::number(result));
}

void Widget::Generate_number2()
{
    //累加但是最大值,最小值在范围内
    qDebug()<<"累加整数";
    qDebug()<<"max_value:"<<max_value;
    qDebug()<<"min_value:"<<min_value;
    qDebug()<<"refresh_rate:"<<refresh_rate;
    qDebug()<<"step_value:"<<step_value;
    result = result+step_value;
    if (result>max_value){
        result = min_value;
    }
    qle_out->setText(QString::number(result));

}
void Widget::Generate_number3()
{
    //累加但是最大值,最小值在范围内
    qDebug()<<"累减整数";
    qDebug()<<"max_value:"<<max_value;
    qDebug()<<"min_value:"<<min_value;
    qDebug()<<"refresh_rate:"<<refresh_rate;
    qDebug()<<"step_value:"<<step_value;
    result = result-step_value;
    if (result<min_value){
        result = max_value;
    }
    qle_out->setText(QString::number(result));

}
void Widget::Generate_number4()
{
    qDebug()<<"固定数据";
    qDebug()<<"max_value:"<<max_value;
    qDebug()<<"min_value:"<<min_value;
    qDebug()<<"refresh_rate:"<<refresh_rate;
    qDebug()<<"step_value:"<<step_value;
    result = result;
    qle_out->setText(QString::number(result));

}
void Widget::Generate_number5()
{
    QDateTime time = QDateTime::currentDateTime();   //获取当前时间
    //int timeT = time.toTime_t();
    result = time.toTime_t();
    qle_out->setText(QString::number(result));

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值