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));
}