#include "adjust_page.h"
|
#include "ui_adjust_page.h"
|
#include "IMEKeyBoard/keyboard_num.h"
|
|
Adjust_Page::Adjust_Page(QWidget *parent, Work_Thread *thread) :
|
custom_dialog(parent),
|
ui(new Ui::Adjust_Page)
|
{
|
ui->setupUi(this);
|
|
work_thread = thread;
|
|
//////
|
set_btn_beep(ui->adj_tabwidget,SIGNAL(currentChanged(int)));
|
set_btn_beep(ui->pushButton_Exit,SIGNAL(pressed()));
|
|
//tab1
|
set_btn_beep(ui->pushButton_vc_get1,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_vc_get2,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_vc_cal,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_vc_read,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_vc_reset,SIGNAL(pressed()));
|
|
set_btn_beep(ui->edit_vc_adj1,SIGNAL(custom_click()));
|
set_btn_beep(ui->edit_vc_adj2,SIGNAL(custom_click()));
|
|
//tab2
|
set_btn_beep(ui->pushButton_ic_get1,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_ic_get2,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_ic_cal,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_ic_read,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_ic_reset,SIGNAL(pressed()));
|
|
set_btn_beep(ui->edit_ic_adj1,SIGNAL(custom_click()));
|
set_btn_beep(ui->edit_ic_adj2,SIGNAL(custom_click()));
|
set_btn_beep(ui->edit_chgvol,SIGNAL(custom_click()));
|
set_btn_beep(ui->edit_chgcurr,SIGNAL(custom_click()));
|
|
set_btn_beep(ui->pushButto_startchg,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButto_startdis,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButto_stopchg,SIGNAL(pressed()));
|
|
//tab3
|
set_btn_beep(ui->pushButton_II_set,SIGNAL(pressed()));
|
|
set_btn_beep(ui->ledit_II_offset,SIGNAL(custom_click()));
|
set_btn_beep(ui->ledit_II_slope,SIGNAL(custom_click()));
|
|
//////
|
connect(ui->adj_tabwidget,SIGNAL(currentChanged(int)),this,SLOT(TabChanged(int)));
|
connect(ui->pushButton_Exit,SIGNAL(released()),this,SLOT(BtnReleased()));
|
|
//tab1
|
connect(ui->pushButton_vc_get1,SIGNAL(released()),this,SLOT(BtnReleased()));
|
connect(ui->pushButton_vc_get2,SIGNAL(released()),this,SLOT(BtnReleased()));
|
connect(ui->pushButton_vc_cal,SIGNAL(released()),this,SLOT(BtnReleased()));
|
connect(ui->pushButton_vc_read,SIGNAL(released()),this,SLOT(BtnReleased()));
|
connect(ui->pushButton_vc_reset,SIGNAL(released()),this,SLOT(BtnReleased()));
|
|
connect(ui->edit_vc_adj1,SIGNAL(custom_click()),this,SLOT(leditAction()));
|
connect(ui->edit_vc_adj2,SIGNAL(custom_click()),this,SLOT(leditAction()));
|
|
//tab2
|
connect(ui->pushButton_ic_get1,SIGNAL(released()),this,SLOT(BtnReleased()));
|
connect(ui->pushButton_ic_get2,SIGNAL(released()),this,SLOT(BtnReleased()));
|
connect(ui->pushButton_ic_cal,SIGNAL(released()),this,SLOT(BtnReleased()));
|
connect(ui->pushButton_ic_read,SIGNAL(released()),this,SLOT(BtnReleased()));
|
connect(ui->pushButton_ic_reset,SIGNAL(released()),this,SLOT(BtnReleased()));
|
|
connect(ui->edit_ic_adj1,SIGNAL(custom_click()),this,SLOT(leditAction()));
|
connect(ui->edit_ic_adj2,SIGNAL(custom_click()),this,SLOT(leditAction()));
|
|
connect(ui->edit_chgvol,SIGNAL(custom_click()),this,SLOT(leditAction()));
|
connect(ui->edit_chgcurr,SIGNAL(custom_click()),this,SLOT(leditAction()));
|
|
connect(ui->pushButto_startchg,SIGNAL(released()),this,SLOT(BtnReleased()));
|
connect(ui->pushButto_startdis,SIGNAL(released()),this,SLOT(BtnReleased()));
|
connect(ui->pushButto_stopchg,SIGNAL(released()),this,SLOT(BtnReleased()));
|
|
//tab3
|
connect(ui->pushButton_II_set,SIGNAL(released()),this,SLOT(BtnReleased()));
|
|
connect(ui->ledit_II_offset,SIGNAL(custom_click()),this,SLOT(leditAction()));
|
connect(ui->ledit_II_slope,SIGNAL(custom_click()),this,SLOT(leditAction()));
|
|
timer_500ms = new QTimer(this);
|
connect(timer_500ms,SIGNAL(timeout()),this,SLOT(DSP_UpdateSlot()));
|
}
|
|
Adjust_Page::~Adjust_Page()
|
{
|
delete ui;
|
delete timer_500ms;
|
}
|
|
void Adjust_Page::showAdjustPage()
|
{
|
work_thread->setWorkThreadCMD(work_thread->CMD_GetAdjParamSet);
|
cmdExecState = 2;
|
|
stateCnt = 0;
|
|
DSP_UpdateSlot();
|
|
connect(work_thread,SIGNAL(sendCMD_Result(int)),this,SLOT(recvCMD_Result(int)));
|
|
timer_500ms->start(500);
|
|
this->exec();
|
}
|
|
void Adjust_Page::closeAdjustPage()
|
{
|
timer_500ms->stop();
|
|
disconnect(work_thread,SIGNAL(sendCMD_Result(int)),this,SLOT(recvCMD_Result(int)));
|
|
this->close();
|
}
|
|
void Adjust_Page::TabChanged(int index)
|
{
|
(void)index;
|
work_thread->setWorkThreadCMD(work_thread->CMD_GetAdjParamSet);
|
cmdExecState = 2;
|
}
|
|
void Adjust_Page::DSP_UpdateSlot()
|
{
|
QString stateerr;
|
stateerr.sprintf("State = 0x%X,Error = 0x%X",work_thread->modTestData_Origin.State,work_thread->modTestData_Origin.Error);
|
ui->label_stateerrorcode->setText(stateerr);
|
|
if(ui->adj_tabwidget->currentIndex() == 0){
|
ui->label_vc_vol1->setText(QString::number(((float)work_thread->modTestData_Origin.ADCVdc/1000),'f',3));
|
}
|
else if(ui->adj_tabwidget->currentIndex() == 1){
|
if(ADJ_STATE_DISCHARGE == work_thread->adjWorkState){
|
ui->label_adjworkstate->setText(tr("状态:正在放电!"));
|
}
|
else if(ADJ_STATE_CHARGE == work_thread->adjWorkState){
|
ui->label_adjworkstate->setText(tr("状态:正在充电!"));
|
}
|
else{
|
ui->label_adjworkstate->setText(tr("状态:停止"));
|
}
|
|
ui->label_ic_vol1->setText(QString::number(((float)work_thread->modTestData_Origin.ADCVdc/1000),'f',3));
|
|
qint32 ADCIdc = work_thread->modTestData_Origin.ADCIdc;
|
if(ADCIdc < 0){
|
ADCIdc *= -1;
|
}
|
ui->label_ic1->setText(QString::number(((float)ADCIdc/1000),'f',3));
|
}
|
|
if(work_thread->adjWorkState != ADJ_STATE_STOPPED){
|
if(work_thread->modTestData.State == 0){
|
stateCnt++;
|
if(stateCnt >= 10){
|
stateCnt = 0;
|
work_thread->setWorkThreadCMD(work_thread->CMD_AdjStopTest);
|
}
|
}
|
else{
|
stateCnt = 0;
|
}
|
}
|
else{
|
stateCnt = 0;
|
}
|
|
}
|
|
void Adjust_Page::updateAdjParamRead(){
|
ui->label_slope1->setText(QString::number(work_thread->adjParamSet.Vslope));
|
ui->label_offset1->setText(QString::number(work_thread->adjParamSet.Voffset));
|
|
ui->label_ic_slope1->setText(QString::number(work_thread->adjParamSet.Islope));
|
ui->label_ic_offset1->setText(QString::number(work_thread->adjParamSet.Ioffset));
|
}
|
|
void Adjust_Page::recvCMD_Result(int res)
|
{
|
if(res < 0){
|
popBox(tr("操作失败!"));
|
}
|
|
if(2 == cmdExecState){
|
updateAdjParamRead();
|
}
|
|
cmdExecState = 0;
|
}
|
|
void Adjust_Page::getTestParam(const quint8 adjst)
|
{
|
testParam = work_thread->testParam;
|
|
if(ADJ_STATE_CHARGE == adjst){
|
CHARGE_PARAM_SET param;
|
param.Vchg = ui->edit_chgvol->text().toDouble()*100;
|
param.Ichg = ui->edit_chgcurr->text().toDouble()*100;
|
param.Tchg = 600;
|
|
testParam.chgParam.sum_vol_high = param.Vchg;//cell_vol_high = param.Vchg;
|
testParam.chgParam.chg_curr = param.Ichg;
|
if(testParam.chgParam.chg_time < param.Tchg){
|
testParam.chgParam.chg_time = param.Tchg;
|
}
|
}
|
else if(ADJ_STATE_DISCHARGE == adjst){
|
DISCHG_PARAM_SET param;
|
param.Vdis = ui->edit_chgvol->text().toDouble()*100;
|
param.Idis = ui->edit_chgcurr->text().toDouble()*100;
|
param.Tdis = 600;
|
|
testParam.disParam.sum_vol_low = param.Vdis;//cell_vol_low = param.Vdis;
|
testParam.disParam.dis_curr = param.Idis;
|
|
if(testParam.disParam.dis_time < param.Tdis){
|
testParam.disParam.dis_time = param.Tdis;
|
}
|
}
|
}
|
|
int Adjust_Page::adjStartErrorCheck(const quint8 st){
|
|
if( (work_thread->modTestData.Error & MOD_ERROR_VOL)
|
|| (work_thread->modTestData.ADCVdc< VOL_TOO_LOW || work_thread->modTestData.ADCVdc>VOL_TOO_HIGH) ){
|
return -1;
|
}
|
|
double vol = work_thread->modTestData.ADCVdc;
|
quint16 volmin = (quint16)(vol * 0.8);
|
quint16 volmax = (quint16)(vol * 1.2);
|
|
if(ADJ_STATE_CHARGE == st){
|
CHARGE_PARAM_SET param;
|
param.Vchg = ui->edit_chgvol->text().toDouble()*100;
|
param.Ichg = ui->edit_chgcurr->text().toDouble()*100;
|
|
if( (param.Vchg < work_thread->modTestData.ADCVdc+10)
|
|| (param.Vchg > volmax) ){
|
return -2;
|
}
|
|
if(param.Ichg < 10){
|
return -3;
|
}
|
}
|
else{
|
DISCHG_PARAM_SET param;
|
param.Vdis = ui->edit_chgvol->text().toDouble()*100;
|
param.Idis = ui->edit_chgcurr->text().toDouble()*100;
|
|
if( (param.Vdis+10 > work_thread->modTestData.ADCVdc)
|
|| (param.Vdis < volmin) ){
|
return -2;
|
}
|
|
if(param.Idis < 10){
|
return -3;
|
}
|
}
|
|
return 0;
|
}
|
|
void Adjust_Page::BtnReleased()
|
{
|
QPushButton *pb = dynamic_cast<QPushButton*>(sender());
|
|
if(pb == ui->pushButton_Exit)
|
{
|
if( (work_thread->adjWorkState != ADJ_STATE_STOPPED)
|
|| (work_thread->modTestData.State != 0) ){
|
work_thread->setWorkThreadCMD(work_thread->CMD_AdjStopTest);
|
}
|
|
closeAdjustPage();
|
}
|
else if(pb == ui->pushButto_startchg)
|
{
|
int staerr = adjStartErrorCheck(ADJ_STATE_CHARGE);
|
|
if(-1 == staerr){
|
popBox(tr("输入电压异常!"));
|
}
|
else if( -2 == staerr){
|
popBox(tr("设定电压错误!"));
|
}
|
else if( -3 == staerr){
|
popBox(tr("设定电流错误!"));
|
}
|
else{
|
cmdExecState = 1;//启动
|
|
getTestParam(ADJ_STATE_CHARGE);
|
work_thread->saveTestParam(testParam);
|
work_thread->setWorkThreadCMD(work_thread->CMD_AdjStartChr);
|
}
|
}
|
else if(pb == ui->pushButto_startdis)
|
{
|
int staerr = adjStartErrorCheck(ADJ_STATE_DISCHARGE);
|
|
if(-1 == staerr){
|
popBox(tr("输入电压异常!"));
|
}
|
else if( -2 == staerr){
|
popBox(tr("设定电压错误!"));
|
}
|
else if( -3 == staerr){
|
popBox(tr("设定电流错误!"));
|
}
|
else{
|
cmdExecState = 1;
|
|
getTestParam(ADJ_STATE_DISCHARGE);
|
work_thread->saveTestParam(testParam);
|
work_thread->setWorkThreadCMD(work_thread->CMD_AdjStartDis);
|
}
|
}
|
else if(pb == ui->pushButto_stopchg)
|
{
|
work_thread->setWorkThreadCMD(work_thread->CMD_AdjStopTest);
|
}
|
else if(pb == ui->pushButton_vc_get1)
|
{
|
now_value1 = work_thread->modTestData_Origin.ADCVdc;
|
adj_value1 = ui->edit_vc_adj1->text().toDouble()*1000;
|
now_value2 = 0;
|
adj_value2 = 0;
|
}
|
else if(pb == ui->pushButton_vc_get2)
|
{
|
now_value2 = work_thread->modTestData_Origin.ADCVdc;
|
adj_value2 = ui->edit_vc_adj2->text().toDouble()*1000;
|
}
|
else if(pb == ui->pushButton_vc_cal)
|
{
|
ADJ_PARAM_SET tempadj = work_thread->adjParamSet;
|
|
quint16 tslope = 0;
|
qint16 toffset = 0;
|
|
//1 point
|
if(now_value2==0 && adj_value2==0){
|
double tmpdat_y = now_value1;
|
tmpdat_y -= tempadj.Voffset;
|
tmpdat_y *= 10000;
|
tmpdat_y /= tempadj.Vslope;
|
//qDebug("origin vol = %d",tmpdat_y);
|
|
double newk = (adj_value1-tempadj.Voffset);
|
|
if(tmpdat_y > 0.1){
|
newk /= tmpdat_y;
|
}
|
else{
|
newk = 0;
|
}
|
|
toffset = tempadj.Voffset;
|
tslope = (quint16)(newk*10000);
|
}
|
//2 point
|
else{
|
double orign_v1 = now_value1;
|
orign_v1 -= tempadj.Voffset;
|
orign_v1 *= 10000;
|
orign_v1 /= tempadj.Vslope;
|
double orign_v2 = now_value2;
|
orign_v2 -= tempadj.Voffset;
|
orign_v2 *= 10000;
|
orign_v2 /= tempadj.Vslope;
|
//qDebug("origin_v1 = %d, origin_v2 = %d",orign_v1,orign_v2);
|
|
if(orign_v1 != orign_v2){
|
double vslop = adj_value2-adj_value1;
|
vslop /= (orign_v2-orign_v1);//k = (y2-y1)/x2-x1)
|
|
tslope = (quint16)(vslop*10000);
|
|
vslop *= orign_v2; //b = y2-kx2
|
toffset = (qint16)(adj_value2-vslop);
|
}
|
}
|
|
ui->label_slope2->setText(QString::number(tslope));
|
ui->label_offset2->setText(QString::number(toffset));
|
|
if(toffset>-1000&&toffset<1000&&tslope>8000&&tslope<12000)
|
{
|
tempadj.Vslope = tslope;
|
tempadj.Voffset = toffset;
|
|
work_thread->saveAdjParam(tempadj);
|
}
|
|
cmdExecState = 3;//校准--写
|
}
|
else if(pb == ui->pushButton_vc_reset)
|
{
|
ADJ_PARAM_SET tempadj = work_thread->adjParamSet;
|
tempadj.Voffset = 0;
|
tempadj.Vslope = 10000;
|
|
ui->label_slope2->setText(QString::number(tempadj.Vslope));
|
ui->label_offset2->setText(QString::number(tempadj.Voffset));
|
|
work_thread->saveAdjParam(tempadj);
|
|
cmdExecState = 3;
|
}
|
else if(pb == ui->pushButton_ic_get1)
|
{
|
now_value1 = work_thread->modTestData_Origin.ADCIdc;
|
if(now_value1 < 0){
|
now_value1 *= -1;
|
}
|
|
adj_value1 = ui->edit_ic_adj1->text().toDouble()*1000;
|
now_value2 = 0;
|
adj_value2 = 0;
|
}
|
else if(pb == ui->pushButton_ic_get2)
|
{
|
now_value2 = work_thread->modTestData_Origin.ADCIdc;
|
if(now_value2 < 0){
|
now_value2 *= -1;
|
}
|
adj_value2 = ui->edit_ic_adj2->text().toDouble()*1000;
|
}
|
else if(pb == ui->pushButton_ic_cal)
|
{
|
ADJ_PARAM_SET tempadj = work_thread->adjParamSet;
|
|
quint16 tslope = 0;
|
qint16 toffset = 0;
|
|
//1 point
|
if(now_value2==0 && adj_value2==0){
|
double tmpdat_y = now_value1;
|
tmpdat_y -= tempadj.Ioffset;
|
tmpdat_y *= 10000;
|
tmpdat_y /= tempadj.Islope;
|
//qDebug("origin curr = %d",tmpdat_y);
|
|
double newk = (adj_value1-tempadj.Ioffset);
|
|
if(tmpdat_y > 0.1){
|
newk /= tmpdat_y;
|
}
|
else{
|
newk = 0;
|
}
|
|
toffset = tempadj.Ioffset;
|
tslope = (quint16)(newk*10000);
|
}
|
//2 point
|
else{
|
double orign_v1 = now_value1;
|
orign_v1 -= tempadj.Ioffset;
|
orign_v1 *= 10000;
|
orign_v1 /= tempadj.Islope;
|
double orign_v2 = now_value2;
|
orign_v2 -= tempadj.Ioffset;
|
orign_v2 *= 10000;
|
orign_v2 /= tempadj.Islope;
|
//qDebug("origin_I1 = %d, origin_I2 = %d",orign_v1,orign_v2);
|
|
if(orign_v1 != orign_v2){
|
double vslop = adj_value2-adj_value1;
|
vslop /= (orign_v2-orign_v1);//k = (y2-y1)/x2-x1)
|
|
tslope = (quint16)(vslop*10000);
|
|
vslop *= orign_v2; //b = y2-kx2
|
toffset = (qint16)(adj_value2-vslop);
|
}
|
}
|
|
ui->label_ic_slope2->setText(QString::number(tslope));
|
ui->label_ic_offset2->setText(QString::number(toffset));
|
|
if(toffset>-1000&&toffset<1000&&tslope>8000&&tslope<12000)
|
{
|
tempadj.Islope = tslope;
|
tempadj.Ioffset = toffset;
|
|
work_thread->saveAdjParam(tempadj);
|
}
|
|
cmdExecState = 3;//校准--写
|
}
|
else if(pb == ui->pushButton_II_set)
|
{
|
ADJ_PARAM_SET tempadj = work_thread->adjParamSet;
|
|
quint16 tslope = ui->ledit_II_slope->text().toInt();
|
qint16 toffset = ui->ledit_II_offset->text().toInt();
|
|
if(toffset>-1000&&toffset<1000&&tslope>8000&&tslope<12000)
|
{
|
tempadj.Islope = tslope;
|
tempadj.Ioffset = toffset;
|
|
//qDebug("tslope = %d,toffset = %d",tslope,toffset);
|
|
work_thread->saveAdjParam(tempadj);
|
}
|
|
cmdExecState = 3;//校准--写
|
}
|
else if(pb == ui->pushButton_ic_reset)
|
{
|
ADJ_PARAM_SET tempadj = work_thread->adjParamSet;
|
tempadj.Ioffset = 0;
|
tempadj.Islope = 10000;
|
|
ui->label_ic_slope2->setText(QString::number(tempadj.Islope));
|
ui->label_ic_offset2->setText(QString::number(tempadj.Ioffset));
|
|
work_thread->saveAdjParam(tempadj);
|
|
cmdExecState = 3;
|
}
|
else if(pb==ui->pushButton_vc_read || pb==ui->pushButton_ic_read)
|
{
|
work_thread->setWorkThreadCMD(work_thread->CMD_GetAdjParamSet);
|
cmdExecState = 2; //读
|
}
|
}
|
|
void Adjust_Page::leditAction()
|
{
|
Custom_LineEdit *le = dynamic_cast<Custom_LineEdit*>(sender());
|
|
if(le == ui->edit_vc_adj1)
|
{
|
setEditInput(le, ui->label_vc_adj1, 0, 110, 3);
|
}
|
else if(le == ui->edit_vc_adj2)
|
{
|
setEditInput(le, ui->label_vc_adj1, 0, 110, 3);
|
}
|
else if(le == ui->edit_ic_adj1)
|
{
|
setEditInput(le, ui->label_ic_adj1, 0, 15, 3);
|
}
|
else if(le == ui->edit_ic_adj2)
|
{
|
setEditInput(le, ui->label_ic_adj2, 0, 15, 3);
|
}
|
else if(le == ui->edit_chgvol)
|
{
|
paramEdited = false;
|
|
setEditInput(le, ui->label_chgvolset, 0, (VOLTAGE_MAX+0.2), 2);
|
|
if(ADJ_STATE_STOPPED != work_thread->adjWorkState){
|
if(paramEdited)
|
{
|
getTestParam(work_thread->adjWorkState);
|
work_thread->saveTestParam(testParam);
|
}
|
}
|
}
|
else if(le == ui->edit_chgcurr)
|
{
|
paramEdited = false;
|
|
setEditInput(le, ui->label_chgcurrset, 1, (CURRENT_MAX+0.2), 2);
|
|
if(ADJ_STATE_STOPPED != work_thread->adjWorkState){
|
if(paramEdited)
|
{
|
getTestParam(work_thread->adjWorkState);
|
work_thread->saveTestParam(testParam);
|
}
|
}
|
}
|
else if(le == ui->ledit_II_offset)
|
{
|
setEditInputEx(le, ui->label_II_offset, -1000, 1000, 0);
|
}
|
else if(le == ui->ledit_II_slope)
|
{
|
setEditInputEx(le, ui->label_II_slope, 8000, 12000, 0);
|
}
|
}
|
|
void Adjust_Page::setEditInput(Custom_LineEdit *edit, QLabel *lable, float min, float max, int floatNum)
|
{
|
QString origcolor = edit->styleSheet();
|
//edit->setStyleSheet("color:red");
|
|
KeyBoard_Num keyboard(this, INPUT_DATA, lable->text());
|
keyboard.execKeyboard();
|
|
DATA_KB_RTN kbdata = keyboard.get_kb_data();
|
if(kbdata.If_OK)
|
{
|
float input = kbdata.set_text.toFloat();
|
if(input>=min && input<=max)
|
{
|
edit->setText(QString::number(input,'f',floatNum));
|
|
paramEdited = true;
|
}
|
else
|
edit->setStyleSheet(origcolor);
|
}
|
else
|
edit->setStyleSheet(origcolor);
|
}
|
|
void Adjust_Page::setEditInputEx(Custom_LineEdit *edit, QLabel *lable, float min, float max, int floatNum)
|
{
|
QString origcolor = edit->styleSheet();
|
//edit->setStyleSheet("color:red");
|
|
KeyBoard_Num keyboard(this, INPUT_DATE, lable->text());
|
keyboard.execKeyboard();
|
|
DATA_KB_RTN kbdata = keyboard.get_kb_data();
|
if(kbdata.If_OK)
|
{
|
float input = kbdata.set_text.toFloat();
|
if(input>=min && input<=max)
|
{
|
edit->setText(QString::number(input,'f',floatNum));
|
}
|
else
|
edit->setStyleSheet(origcolor);
|
}
|
else
|
edit->setStyleSheet(origcolor);
|
}
|
|
void Adjust_Page::popBox(QString msg)
|
{
|
MessageBox box(this,msg,MessageBox::Ok,work_thread);
|
box.exec();
|
}
|