|
yafeilinux 发表于 2014-11-21 22:17
用多线程来做,不然进入循环之中其他会阻塞的。
问题是线程里面能够用那个gui类吗 我看书上说不能啊
我贴下我的源码 老师你看下
下面是我的按钮槽函数 执行操作 这只是一个按钮 另一个与此相似:
//节流阀&进气歧管清洗
void fuction_2Dialog:n_start2Button_2_clicked()
{
QSqlQuery query1,query3;
QDateTime Time1,Time2,Time3;
QString str_time1,str_function1,str_function2,str,str_time2,str_time3;
int value,time;
//获取起始时间
str_time1 = Time1.currentDateTime().toString();
str_function1= QObject::tr("节流阀&进气歧管清洗");
str_function2= QObject::tr("");
str = QObject::tr("");
str_time2 = QObject::tr("");
str_time3 = Time3.currentDateTime().toString("M");
//使不能
ui->label_jieliufa->show();
ui->start2Button_2->setEnabled(false);
ui->pushButton->setEnabled(false);
ui->spinBox_2->setEnabled(false);
//qDebug()<<"str_time3"<<str_time3;
//插入历史记录
query1.prepare("insert into car values(?,?,?,?,?,?)");
query1.addBindValue(str_time1);
query1.addBindValue(str_function1);
query1.addBindValue(str_function2);
query1.addBindValue(str);
query1.addBindValue(str_time2);
query1.addBindValue(str_time3);
query1.exec();
query1.exec("select *from car");
//控制按键
digitalWrite (4,1) ; // On
//进度条
value = ui->spinBox_2->value();
if(0!=value)
{
//插入历史记录
query3.exec();
query3.exec("select *from spinBox1");
query3.last();
int value1=query3.value(0).toInt();
//qDebug("spinBox %d",value1);
ui->spinBox_2->setValue(value1);
time = value1*60;
}
else //spinbox为0的情况
{
query3.exec();
query3.exec("select *from spinBox1");
query3.last();
int value1=query3.value(0).toInt();
ui->spinBox_2->setValue(value1);
//qDebug("spinBox %d",value1);
time = value1*60;
}
num_time =time;
ui->progressBar_jieliufa->setMaximum(time);
// QProgressDialog process(tr("开始节流阀&进气歧管清洗..."),0,0,time,this);
// process.setWindowFlags(Qt::FramelessWindowHint);//隐藏标题栏
// process.show();
// process.move(800,300);
/* for(int i=0;i<time;i++)
{
//process.setValue(i);
ui->progressBar_jieliufa->setValue(i);
qApp->processEvents();
QTest::qWait (991);
//sleep(991);
}*/
thread->start();
//process.setValue(time);//显示100%
// ui->progressBar_jieliufa->setValue(time);
//按键关闭
digitalWrite (4, 0) ; // Off
//获取结束时间
str_time2 =Time2.currentDateTime().toString();
str_time3 = Time3.currentDateTime().toString("M");
// qDebug()<<"str_time3"<<str_time3;
//插入历史记录
query1.prepare("insert into car values(?,?,?,?,?,?)");
query1.addBindValue(str_time1);
query1.addBindValue(str_function1);
query1.addBindValue(str_function2);
query1.addBindValue(str);
query1.addBindValue(str_time2);
query1.addBindValue(str_time3);
query1.exec();
query1.exec("select *from car");
//蜂鸣器发出警报
digitalWrite (2, 1);
QMessageBox msgBox(0);
msgBox.setText("友情提示!");
msgBox.setInformativeText("节流阀&进气歧管清洗已完成!");
msgBox.setStandardButtons(QMessageBox::Yes);
msgBox.setWindowFlags(Qt::FramelessWindowHint);//隐藏标题栏
msgBox.setStyleSheet("QPushButton{background-color:rgb(92,203,244)}");
if(QMessageBox::Yes == msgBox.exec())
{
digitalWrite(2,0);
}
//恢复
ui->label_jieliufa->hide();
ui->start2Button_2->setEnabled(true);
ui->pushButton->setEnabled(true);
ui->spinBox_2->setEnabled(true);
//重新设置进度条1
ui->progressBar_jieliufa->setValue(0);
}
请问老师 那个线程改如何创建
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|