Qt主线程
在Qt主线程中需要实现界面初始化,界面的所有显示控制都在主线程中实现,打开串口实现嵌入式AI控制单元数据的收发,并开启人工智能线程、串口线程和UDP线程,同时对用户的控制做出应对和对各个线程传来的数据进行处理。
首先初始化界面,在打开该应用后需要对各个组件进行初始化。
void MainWindow::InitInterface()
{
//原标题隐藏
this->setWindowFlags(Qt::FramelessWindowHint);
//新建一个QListView,可以使comboBox下拉框变宽
ui->comboBoxSelectBox1->setView(new QListView());
ui->comboBoxSelectBox2->setView(new QListView());
ui->comboBoxStart->setView(new QListView());
ui->comboBoxEnd->setView(new QListView());
//图像加载,并显示
img0->load(":/picture/0.png");
img1->load(":/picture/01.png");
img2->load(":/picture/02.png");
img3->load(":/picture/03.png");
img4->load(":/picture/04.png");
img5->load(":/picture/05.png");
img6->load(":/picture/06.png");
img7->load(":/picture/07.png");
img8->load(":/picture/08.png");
img9->load(":/picture/09.png");
imgStart->load(":/picture/loading.png");
ui->label1_1_1->setPixmap(QPixmap::fromImage(img0));
ui->label1_1_2->setPixmap(QPixmap::fromImage(img1));
ui->label1_1_3->setPixmap(QPixmap::fromImage(img2));
ui->label1_1_4->setPixmap(QPixmap::fromImage(img3));
ui->label1_2_1->setPixmap(QPixmap::fromImage(img4));
ui->label1_2_2->setPixmap(QPixmap::fromImage(img5));
ui->label1_2_3->setPixmap(QPixmap::fromImage(img6));
ui->label1_2_4->setPixmap(QPixmap::fromImage(img7));
//图像加载,并显示
imgRight->load(":/picture/right.png");
ui->label7->setPixmap(QPixmap::fromImage(imgRight));
//图像加载,并显示
imgRight->load(":/picture/left.png");
ui->label8->setPixmap(QPixmap::fromImage(imgRight));
//设置spin的范围为0~250
ui->spinBox1_1->setRange(0,250);
//设置spin不能手动输入
ui->spinBox1_1->setFocusPolicy(Qt::NoFocus);
ui->spinBox1_2->setRange(0,250);
ui->spinBox1_2->setFocusPolicy(Qt::NoFocus);
ui->spinBox1_3->setRange(0,250);
ui->spinBox1_3->setFocusPolicy(Qt::NoFocus);
ui->spinBox1_4->setRange(0,250);
ui->spinBox1_4->setFocusPolicy(Qt::NoFocus);
ui->spinBox1_5->setRange(0,250);
ui->spinBox1_5->setFocusPolicy(Qt::NoFocus);
ui->spinBox1_6->setRange(0,250);
ui->spinBox1_6->setFocusPolicy(Qt::NoFocus);
//spin失能
SpinEnable(false);
//仓库一的显示内容为空
Box1DisplayImagePredict("1F2F3F4F");
//仓库二的显示内容为空
Box2DisplayImagePredict("1F2F3F4F");
//录音按键样式
ui->label2_1->setStyleSheet("border:2px groove gray;\
border-radius:10px;background-color:rgb(255, 255, 0)");
//录音按键样式
ui->label2_2->setStyleSheet("border:2px groove gray;\
border-radius:10px;background-color:rgb(255, 255, 0)");
}
在Qt中,信号槽机制是非常实用的一个技术。当某个事件发生之后,它就会发出一个信号(Signal),如果有对象对这个信号感兴趣,它就会使用连接(connect)函数将想要处理的信号和自己的一个函数(槽函数slot)绑定,以处理这个信号。