#include "OSWork_1.h"
extern int PSTime;
extern int CSTime;
void OSWork_1::display(int c) {
ui.label_1->setAutoFillBackground(true); //一定要这句,否则不行
ui.label_2->setAutoFillBackground(true); //一定要这句,否则不行
ui.label_3->setAutoFillBackground(true); //一定要这句,否则不行
ui.label_4->setAutoFillBackground(true); //一定要这句,否则不行
ui.label_5->setAutoFillBackground(true); //一定要这句,否则不行
ui.label_6->setAutoFillBackground(true); //一定要这句,否则不行
ui.label_7->setAutoFillBackground(true); //一定要这句,否则不行
ui.label_8->setAutoFillBackground(true); //一定要这句,否则不行
ui.label_9->setAutoFillBackground(true); //一定要这句,否则不行
ui.label_10->setAutoFillBackground(true); //一定要这句,否则不行
switch (c)
{
case 0:
ui.label_1->setPalette(pe2);
ui.label_2->setPalette(pe2);
ui.label_3->setPalette(pe2);
ui.label_4->setPalette(pe2);
ui.label_5->setPalette(pe2);
ui.label_6->setPalette(pe2);
ui.label_7->setPalette(pe2);
ui.label_8->setPalette(pe2);
ui.label_9->setPalette(pe2);
ui.label_10->setPalette(pe2);
break;
case 1:
ui.label_1->setPalette(pe1);
ui.label_2->setPalette(pe2);
ui.label_3->setPalette(pe2);
ui.label_4->setPalette(pe2);
ui.label_5->setPalette(pe2);
ui.label_6->setPalette(pe2);
ui.label_7->setPalette(pe2);
ui.label_8->setPalette(pe2);
ui.label_9->setPalette(pe2);
ui.label_10->setPalette(pe2);
break;
case 2:
ui.label_1->setPalette(pe1);
ui.label_2->setPalette(pe1);
ui.label_3->setPalette(pe2);
ui.label_4->setPalette(pe2);
ui.label_5->setPalette(pe2);
ui.label_6->setPalette(pe2);
ui.label_7->setPalette(pe2);
ui.label_8->setPalette(pe2);
ui.label_9->setPalette(pe2);
ui.label_10->setPalette(pe2);
break;
case 3:
ui.label_1->setPalette(pe1);
ui.label_2->setPalette(pe1);
ui.label_3->setPalette(pe1);
ui.label_4->setPalette(pe2);
ui.label_5->setPalette(pe2);
ui.label_6->setPalette(pe2);
ui.label_7->setPalette(pe2);
ui.label_8->setPalette(pe2);
ui.label_9->setPalette(pe2);
ui.label_10->setPalette(pe2);
break;
case 4:
ui.label_1->setPalette(pe1);
ui.label_2->setPalette(pe1);
ui.label_3->setPalette(pe1);
ui.label_4->setPalette(pe1);
ui.label_5->setPalette(pe2);
ui.label_6->setPalette(pe2);
ui.label_7->setPalette(pe2);
ui.label_8->setPalette(pe2);
ui.label_9->setPalette(pe2);
ui.label_10->setPalette(pe2);
break;
case 5:
ui.label_1->setPalette(pe1);
ui.label_2->setPalette(pe1);
ui.label_3->setPalette(pe1);
ui.label_4->setPalette(pe1);
ui.label_5->setPalette(pe1);
ui.label_6->setPalette(pe2);
ui.label_7->setPalette(pe2);
ui.label_8->setPalette(pe2);
ui.label_9->setPalette(pe2);
ui.label_10->setPalette(pe2);
break;
case 6:
ui.label_1->setPalette(pe1);
ui.label_2->setPalette(pe1);
ui.label_3->setPalette(pe1);
ui.label_4->setPalette(pe1);
ui.label_5->setPalette(pe1);
ui.label_6->setPalette(pe1);
ui.label_7->setPalette(pe2);
ui.label_8->setPalette(pe2);
ui.label_9->setPalette(pe2);
ui.label_10->setPalette(pe2);
break;
case 7:
ui.label_1->setPalette(pe1);
ui.label_2->setPalette(pe1);
ui.label_3->setPalette(pe1);
ui.label_4->setPalette(pe1);
ui.label_5->setPalette(pe1);
ui.label_6->setPalette(pe1);
ui.label_7->setPalette(pe1);
ui.label_8->setPalette(pe2);
ui.label_9->setPalette(pe2);
ui.label_10->setPalette(pe2);
break;
case 8:
ui.label_1->setPalette(pe1);
ui.label_2->setPalette(pe1);
ui.label_3->setPalette(pe1);
ui.label_4->setPalette(pe1);
ui.label_5->setPalette(pe1);
ui.label_6->setPalette(pe1);
ui.label_7->setPalette(pe1);
ui.label_8->setPalette(pe1);
ui.label_9->setPalette(pe2);
ui.label_10->setPalette(pe2);
break;
case 9:
ui.label_1->setPalette(pe1);
ui.label_2->setPalette(pe1);
ui.label_3->setPalette(pe1);
ui.label_4->setPalette(pe1);
ui.label_5->setPalette(pe1);
ui.label_6->setPalette(pe1);
ui.label_7->setPalette(pe1);
ui.label_8->setPalette(pe1);
ui.label_9->setPalette(pe1);
ui.label_10->setPalette(pe2);
break;
case 10:
ui.label_1->setPalette(pe1);
ui.label_2->setPalette(pe1);
ui.label_3->setPalette(pe1);
ui.label_4->setPalette(pe1);
ui.label_5->setPalette(pe1);
ui.label_6->setPalette(pe1);
ui.label_7->setPalette(pe1);
ui.label_8->setPalette(pe1);
ui.label_9->setPalette(pe1);
ui.label_10->setPalette(pe1);
break;
default:
break;
}
ui.label_pnum->setText("生产者数量:" + QString::number(16 - PSTime / 100));
ui.label_cnum->setText("消费者数量:" + QString::number(16 - CSTime / 100));
}
OSWork_1::OSWork_1()
: QMainWindow()
{
ui.setupUi(this);
this->setWindowTitle("生产者消费者模拟器");
producer = nullptr;
consumer = nullptr;
//设置黑底红字
pe1.setColor(QPalette::Background, Qt::black);
pe1.setColor(QPalette::WindowText, Qt::red);
pe2.setColor(QPalette::Background, Qt::white);
pe2.setColor(QPalette::WindowText, Qt::red);
//ui.label_1->setPalette(pe1);
connect(producer, &Producer::pro, this, &OSWork_1::display);
connect(consumer, &Consumer::con, this, &OSWork_1::display);
connect(ui.pushButton_end, &QPushButton::clicked, this, &OSWork_1::End);
connect(ui.pushButton_start, &QPushButton::clicked, this, &OSWork_1::ReStart);
connect(ui.pushButton_addp, &QPushButton::clicked, this, &OSWork_1::add_p);
connect(ui.pushButton_subp, &QPushButton::clicked, this, &OSWork_1::sub_p);
connect(ui.pushButton_addc, &QPushButton::clicked, this, &OSWork_1::add_c);
connect(ui.pushButton_subc, &QPushButton::clicked, this, &OSWork_1::sub_c);
}
OSWork_1::~OSWork_1() {
End();
}
void OSWork_1::End() {
if (producer && !producer->m_stop) {
producer->m_stop = true;
producer->wait();
delete producer;
producer = nullptr;
}
if (consumer && !consumer->m_stop) {
consumer->m_stop = true;
consumer->wait();
consumer->quit();
delete consumer;
consumer = nullptr;
}
}
void OSWork_1::ReStart() {
if (!producer) {
producer = new Producer;
connect(producer, &Producer::pro, this, &OSWork_1::display);
producer->start();
}
if (!consumer) {
consumer = new Consumer;
connect(consumer, &Consumer::con, this, &OSWork_1::display);
consumer->start();
}
}
void OSWork_1::add_p() {
if (producer) {
if (PSTime > 600)
PSTime -= 100;
qDebug() << "PSTime时长为:" << PSTime;
}
}
void OSWork_1::sub_p() {
if (producer) {
if (PSTime < 1500)
PSTime += 100;
qDebug() << "PSTime时长为:" << PSTime;
}
}
void OSWork_1::add_c() {
if (consumer) {
if (CSTime > 600)
CSTime -= 100;
qDebug() << "CSTime时长为:" << CSTime;
}
}
void OSWork_1::sub_c() {
if (consumer) {
if (CSTime < 1500)
CSTime += 100;
qDebug() << "CSTi

CherriesMan
- 粉丝: 2w+
最新资源
- 大学生电子商务“创新创意及创业”挑战赛实施细则.doc
- 2023年数字图像处理实验报告.doc
- 信息技术计算机病毒专家讲座.pptx
- 污泥浓缩脱水系统安全操作规程.doc
- GSYGithubAppFlutter-Kotlin资源
- 研发项目经理培训项目管理.pptx
- 公司项目管理检查考核评分表单位.doc
- 扬州华中项目管理综合平台建设技术方案.doc
- 南京办公大楼项目管理规划.doc
- 互联网+对财务会计的影响研究.pdf
- 中国网络购物市场分析报告.pptx
- 电气工程及其自动化专业个人简历.doc
- ISEK-AI人工智能资源
- 南京工业大学考研工程项目管理专业课.doc
- 医药企业信息管理系统及项目管理分析.doc
- 网络营销推广策划方案范文.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



评论0