#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
ran = new Random;//创建随机数线程对象
connect(this, &Widget::random_num, ran, &Random::Random_num_handler);//连接当前线程传递的随机数个数和随机数线程接收的槽函数
connect(ran, &Random::sendRandom, this, &Widget::Random_handler);//连接随机数线程发送的随机数和当前界面随机数处理函数
mao = new MaoSort;//创建冒泡排序的线程对象
connect(this, &Widget::random_list, mao, &MaoSort::Random_num_handler);//连接当前线程传递的随机数列和冒泡线程接收的槽函数
connect(mao, &MaoSort::sendMaoSort, this, &Widget::MaoSrot_handler);//连接冒泡线程发送的排序好的数列和当前线程排序好的数的处理函数
qui = new QuickSort;//创建快速排序的线程对象
connect(this, &Widget::random_list, qui, &QuickSort::Random_num_handler);//连接当前线程传递的随机数列和快速排序线程接收的槽函数
connect(qui, &QuickSort::sendQuickSort, this, &Widget::QuickSrot_handler);//连接快速排序线程发送的数列和当前界面排序好的数列的处理函数
//连接耗时传递和接收函数
connect(ran, &Random::sendRandTime, this, &Widget::RandTime_handler);
connect(mao, &MaoSort::sendMaoTime, this, &Widget::MaoTime_handler);
connect(qui, &QuickSort::sendQuiTime, this, &Widget::QuiTime_handler);
}
Widget::~Widget()
{
delete ui;
}
//点击开始,默认10个随机数开始生成和排序,启动三个线程,可输入随机数个数*****************************************************8
void Widget::on_pushButton_clicked()
{
if(ui->lineEdit->text().isEmpty())//如果没输入则使用默认随机数10
{
ran->start();//启动子线程获取随机数
}
else
{
emit this->random_num(ui->lineEdit->text().toInt());//获取输入的随机数并发送到线程中
ran->start();//启动获取随机数的子线程
}
}
//处理获取的随机数显示到随机数框中*************************************************************
void Widget::Random_handler(QVector<int> list)
{
for(int i =0; i < list.size(); i++)
{
ui->textEdit->append(QString::number(list.at(i)));//将随机数从容器中取出来放入控件中显示
}
//开始两个排序线程
emit random_list(list);//发送随机数列到两个排序线程中
mao->start();//启动冒泡排序线程
qui->start();//启动快排
}
//处理显示冒泡排序好的数列**************************************************************
void Widget::MaoSrot_handler(QVector<int> list)
{
for(int i =0; i < list.size(); i++)
{
ui->textEdit_mao->append(QString::number(list.at(i)));//将冒泡排序好的数从容器中取出来放入控件中显示
}
}
//处理显示快速排序好的数列**************************************************************
void Widget::QuickSrot_handler(QVector<int> list)
{
for(int i =0; i < list.size(); i++)
{
ui->textEdit_qui->append(QString::number(list.at(i)));//将冒泡排序好的数从容器中取出来放入控件中显示
}
}
//处理耗时显示到UI界面**********************************************************************
void Widget::RandTime_handler(int time)
{
ui->label_random->setText("生成随机数耗时:"+QString::number(time)+"ms");
}
void Widget::MaoTime_handler(int time)
{
ui->label_mao->setText("冒泡排序耗时:"+QString::number(time)+"ms");
}
void Widget::QuiTime_handler(int time)
{
ui->label_qui->setText("快速排序耗时:"+QString::number(time)+"ms");
}
西装没钱买
- 粉丝: 574
- 资源: 2
最新资源
- 基于Vue框架的damai项目设计源码
- Python与爱心:云计算概念的可视化演示
- FR1205N-VB一种N-Channel沟道TO252封装MOS管
- 绿色日用陶瓷:引领消费新风尚,2023年我国日用陶瓷产量稳步增长至679亿件
- 深入探索I2C通信:从基本原理到MATLAB实现
- FQT7P06-VB一种P-Channel沟道SOT223封装MOS管
- 基于Java开发的简单DAO工具设计源码
- IMG_5828.JPG
- MTD20N06VT4G-VB一种N-Channel沟道TO252封装MOS管
- 基于React和TypeScript的Educational Evaluation System设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈