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:
int max_value=10;
int min_value=0;
int step_value=1;
int result=0;
void create_Widget();
QPushButton *btn_Execute;
QRadioButton *radio_Random;
QRadioButton *radio_Increase;
QRadioButton *radio_Subtract;
QButtonGroup *groupButton;
QLineEdit *qle_out;
QStackedWidget *stackedWidget;
QWidget *page_Random;
QLineEdit *qle_Random_Max;
QLineEdit *qle_Random_Min;
QWidget *page_Increase;
QLineEdit *qle_Increase_Max;
QLineEdit *qle_Increase_Min;
QLineEdit *qle_Increase_Step;
QWidget *page_Subtract;
QLineEdit *qle_Subtract_Max;
QLineEdit *qle_Subtract_Min;
QLineEdit *qle_Subtract_Step;
void Generate_number();
private slots:
void on_btn_Execute_clicked();
void on_radioButton_clicked();
void onMaxValueChange(QString);
void onMinValueChange(QString);
void onStepValueChange(QString);
};
#endif // WIDGET_H
Widget.cpp
#include "widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
create_Widget();
connect(btn_Execute,SIGNAL(clicked(bool)),this,SLOT(on_btn_Execute_clicked()));
connect(radio_Random,SIGNAL(clicked(bool)),this,SLOT(on_radioButton_clicked()));
connect(radio_Increase,SIGNAL(clicked(bool)),this,SLOT(on_radioButton_clicked()));
connect(radio_Subtract,SIGNAL(clicked(bool)),this,SLOT(on_radioButton_clicked()));
connect(qle_Random_Max,SIGNAL(textChanged(QString)),this,SLOT(onMaxValueChange(QString)));
connect(qle_Random_Min,SIGNAL(textChanged(QString)),this,SLOT(onMinValueChange(QString)));
connect(qle_Increase_Max,SIGNAL(textChanged(QString)),this,SLOT(onMaxValueChange(QString)));
connect(qle_Increase_Min,SIGNAL(textChanged(QString)),this,SLOT(onMinValueChange(QString)));
connect(qle_Increase_Step,SIGNAL(textChanged(QString)),this,SLOT(onStepValueChange(QString)));
connect(qle_Subtract_Max,SIGNAL(textChanged(QString)),this,SLOT(onMaxValueChange(QString)));
connect(qle_Subtract_Min,SIGNAL(textChanged(QString)),this,SLOT(onMinValueChange(QString)));
connect(qle_Subtract_Step,SIGNAL(textChanged(QString)),this,SLOT(onStepValueChange(QString)));
}
Widget::~Widget()
{
}
void Widget::create_Widget(){
this->setFixedSize(600,420);
btn_Execute = new QPushButton(this);
btn_Execute->setGeometry(50,360,100,30);
btn_Execute->setText("执行");
QGroupBox *groupBox = new QGroupBox(tr("请输入参数的值"));
groupBox->setParent(this);
groupBox->setGeometry(50,20,500,320);
radio_Random = new QRadioButton(groupBox);
radio_Random->setText("随机数据");
radio_Random->move(50,50);
radio_Increase = new QRadioButton(groupBox);
radio_Increase->setText("累加数据");
radio_Increase->move(50,120);
radio_Subtract = new QRadioButton(groupBox);
radio_Subtract->setText("累减数据");
radio_Subtract->move(50,190);
groupButton = new QButtonGroup();
groupButton->addButton(radio_Random,0);
groupButton->addButton(radio_Increase,1);
groupButton->addButton(radio_Subtract,2);
radio_Random->setChecked(true);
QLabel *label_out = new QLabel(groupBox);
label_out->setGeometry(200,250,100,30);
label_out->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
label_out->setText("输出值:");
qle_out = new QLineEdit(groupBox);
qle_out->setGeometry(310,250,150,30);
qle_out->setReadOnly(true);//只做显示禁止编辑
stackedWidget = new QStackedWidget(groupBox);
stackedWidget->setGeometry(200,20,280,200);
page_Random = new QWidget();
QLabel *lab1 = new QLabel(page_Random);
lab1->setText("最大值:");
lab1->setGeometry(20,20,100,30);
lab1->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
qle_Random_Max = new QLineEdit(page_Random);
qle_Random_Max->setGeometry(130,20,120,30);
qle_Random_Max->setText(QString::number(max_value));
QLabel *lab2 = new QLabel(page_Random);
lab2->setText("最小值:");
lab2->setGeometry(20,70,100,30);
lab2->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
qle_Random_Min = new QLineEdit(page_Random);
qle_Random_Min->setGeometry(130,70,120,30);
qle_Random_Min->setText(QString::number(min_value));
page_Increase = new QWidget();
QLabel *lab3 = new QLabel(page_Increase);
lab3->setText("最大值:");
lab3->setGeometry(20,20,100,30);
lab3->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
qle_Increase_Max = new QLineEdit(page_Increase);
qle_Increase_Max->setGeometry(130,20,120,30);
qle_Increase_Max->setText(QString::number(max_value));
QLabel *lab4 = new QLabel(page_Increase);
lab4->setText("最小值:");
lab4->setGeometry(20,70,100,30);
lab4->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
qle_Increase_Min = new QLineEdit(page_Increase);
qle_Increase_Min->setGeometry(130,70,120,30);
qle_Increase_Min->setText(QString::number(min_value));
QLabel *lab5 = new QLabel(page_Increase);
lab5->setText("每次加值:");
lab5->setGeometry(20,120,100,30);
lab5->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
qle_Increase_Step = new QLineEdit(page_Increase);
qle_Increase_Step->setGeometry(130,120,120,30);
qle_Increase_Step->setText(QString::number(step_value));
page_Subtract = new QWidget();
QLabel *lab6 = new QLabel(page_Subtract);
lab6->setText("最大值:");
lab6->setGeometry(20,20,100,30);
lab6->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
qle_Subtract_Max = new QLineEdit(page_Subtract);
qle_Subtract_Max->setGeometry(130,20,120,30);
qle_Subtract_Max->setText(QString::number(max_value));
QLabel *lab7 = new QLabel(page_Subtract);
lab7->setText("最小值:");
lab7->setGeometry(20,70,100,30);
lab7->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
qle_Subtract_Min = new QLineEdit(page_Subtract);
qle_Subtract_Min->setGeometry(130,70,120,30);
qle_Subtract_Min->setText(QString::number(min_value));
QLabel *lab8 = new QLabel(page_Subtract);
lab8->setText("每次减值:");
lab8->setGeometry(20,120,100,30);
lab8->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
qle_Subtract_Step = new QLineEdit(page_Subtract);
qle_Subtract_Step->setGeometry(130,120,120,30);
qle_Subtract_Step->setText(QString::number(step_value));
stackedWidget->addWidget(page_Random);
stackedWidget->addWidget(page_Increase);
stackedWidget->addWidget(page_Subtract);
}
void Widget::on_btn_Execute_clicked(){
Generate_number();
}
void Widget::on_radioButton_clicked(){
switch (groupButton->checkedId())
{
case 0:
stackedWidget->setCurrentIndex(0);
qle_Random_Max->setText(QString::number(max_value));
qle_Random_Min->setText(QString::number(min_value));
break;
case 1:
stackedWidget->setCurrentIndex(1);
qle_Increase_Max->setText(QString::number(max_value));
qle_Increase_Min->setText(QString::number(min_value));
qle_Increase_Step->setText(QString::number(step_value));
break;
case 2:
stackedWidget->setCurrentIndex(2);
qle_Subtract_Max->setText(QString::number(max_value));
qle_Subtract_Min->setText(QString::number(min_value));
qle_Subtract_Step->setText(QString::number(step_value));
break;
}
}
void Widget::onMaxValueChange(QString value){
if(!value.isEmpty()){
max_value = value.toInt();
}
}
void Widget::onMinValueChange(QString value){
if(!value.isEmpty()){
min_value = value.toInt();
}
}
void Widget::onStepValueChange(QString value){
if(!value.isEmpty()){
step_value = value.toInt();
}
}
void Widget::Generate_number(){
switch (groupButton->checkedId())
{
case 0:
qsrand(QTime::currentTime().msec()*qrand()*qrand()*qrand()*qrand()*qrand()*qrand());
result = qrand()%(max_value-min_value)+min_value;
qle_out->setText(QString::number(result));
break;
case 1:
result = result+step_value;
if (result>max_value){
result = min_value;
}
qle_out->setText(QString::number(result));
break;
case 2:
result = result-step_value;
if (result<min_value){
result = max_value;
}
qle_out->setText(QString::number(result));
break;
}
}