123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460 |
- #include "clOnlineExam.h"
- #include "ui_clOnlineExam.h"
- #include "CAppInfo.h"
- #include "logproc.h"
- #include <QScrollBar>
- #include "awMsgBox.h"
- clOnlineExam::clOnlineExam(QWidget *parent) :
- QWidget(parent),
- ui(new Ui::clOnlineExam)
- {
- ui->setupUi(this);
- setStyleSheet(g_appInfoPtr->m_sQssStr);
- qRegisterMetaType<CQueryExamList>("CQueryExamList");
- connect(g_httpBllPtr.get(), &CHttpBll::sgnQueryExamList, this, &clOnlineExam::onQueryExamList);
- qRegisterMetaType<CQueryExamEndList>("CQueryExamEndList");
- connect(g_httpBllPtr.get(), &CHttpBll::sgnQueryExamEndList, this, &clOnlineExam::onQueryExamEndList);
- m_pObjectiveScoreTimer = std::make_shared<QTimer>();
- m_pObjectiveScoreTimer->setInterval(200);
- connect(m_pObjectiveScoreTimer.get(), &QTimer::timeout, this, [&]() {
- m_pObjectiveScoreTimer->stop();
- if (m_pObjectiveScore != nullptr)
- {
- m_pObjectiveScore.reset();
- }
- });
- m_pRefreshTimer = std::make_shared<QTimer>();
- m_pRefreshTimer->setInterval(1000);
- connect(m_pRefreshTimer.get(), &QTimer::timeout, this, [&]() {
- --m_nRefreshSeconds;
- ui->btn_refresh->setText(QString::fromLocal8Bit("倒计时%1s").arg(m_nRefreshSeconds));
- if(m_nRefreshSeconds <= 0)
- {
- m_pRefreshTimer->stop();
- ui->btn_refresh->setEnabled(true);
- ui->btn_refresh->setText(QString::fromLocal8Bit("刷新"));
- }
- });
- }
- clOnlineExam::~clOnlineExam()
- {
- delete ui;
- }
- void clOnlineExam::setUI(const int nWidth, const int nHeight)
- {
- setGeometry(0, 0, nWidth, nHeight);
- // ui->tabw_onlineExam->setGeometry(0, 0, nWidth, nHeight);
- // ui->tabw_onlineExam->setTabText(0, QString::fromLocal8Bit("待考列表"));
- // ui->tabw_onlineExam->setTabText(1, QString::fromLocal8Bit("已完成考试"));
- ui->tabw_onlineExam->setCurrentIndex(0);
- ui->btn_examList->setFixedSize(QSize(g_appInfoPtr->m_fRate*86, g_appInfoPtr->m_fRate*30));
- ui->btn_endExamList->setFixedSize(QSize(g_appInfoPtr->m_fRate*100, g_appInfoPtr->m_fRate*30));
- ui->btn_refresh->setFixedSize(QSize(g_appInfoPtr->m_fRate*86, g_appInfoPtr->m_fRate*30));
- ui->btn_examList->setStyleSheet(QString(R"(QPushButton{
- outline:none;
- border-radius:%1px;
- border:0px solid rgba(255,255,255,1);
- background:rgba(19, 187, 138, 1);
- font-size:%2px;
- font-family:"Microsoft YaHei";
- font-weight:500;
- color:rgba(255,255,255,1);
- })").arg((int)(g_appInfoPtr->m_fRate*15))
- .arg((int)(g_appInfoPtr->m_fRate*12)));
- ui->btn_endExamList->setStyleSheet(QString(R"(QPushButton{
- outline:none;
- border-radius:%1px;
- border:0px solid rgba(255,255,255,1);
- background:rgba(239, 240, 245, 1);
- font-size:%2px;
- font-family:"Microsoft YaHei";
- font-weight:500;
- color:rgba(153, 153, 153, 1);
- })").arg((int)(g_appInfoPtr->m_fRate*15))
- .arg((int)(g_appInfoPtr->m_fRate*12)));
- ui->vlayout_el->setContentsMargins(g_appInfoPtr->m_fRate*30, 0, g_appInfoPtr->m_fRate*30, 0);
- ui->vlayout_fel->setContentsMargins(g_appInfoPtr->m_fRate*30, 0, g_appInfoPtr->m_fRate*30, 0);
- ui->tablewt_examList->setEditTriggers(QAbstractItemView::NoEditTriggers);
- //整行选中的方式
- ui->tablewt_examList->setSelectionBehavior(QAbstractItemView::SelectRows);
- //设置为只能选中一行
- ui->tablewt_examList->setSelectionMode(QAbstractItemView::SingleSelection);
- //隐藏列表头
- ui->tablewt_examList->verticalHeader()->setVisible(false);
- //隐藏边框
- ui->tablewt_examList->setShowGrid(false);
- //表头不高亮显示
- ui->tablewt_examList->horizontalHeader()->setHighlightSections(false);
- //设置行数
- ui->tablewt_examList->setRowCount(10);
- //设置列数
- ui->tablewt_examList->setColumnCount(7);
- ui->tablewt_examList->setHorizontalScrollMode(QTableWidget::ScrollPerPixel);
- ui->tablewt_examList->horizontalScrollBar()->setSingleStep(g_appInfoPtr->m_fRate*5);
- QStringList sHeadStr;
- sHeadStr << QString::fromLocal8Bit("课程") <<
- QString::fromLocal8Bit("层次") <<
- QString::fromLocal8Bit("专业") <<
- QString::fromLocal8Bit("考试进入时间") <<
- QString::fromLocal8Bit("考试时间周期") <<
- QString::fromLocal8Bit("剩余考试次数") <<
- QString::fromLocal8Bit("操作");
- ui->tablewt_examList->setHorizontalHeaderLabels(sHeadStr);
- ui->tablewt_examList->horizontalHeader()->setDefaultAlignment(Qt::AlignLeft | Qt::AlignVCenter);
- ui->tablewt_examList->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed);
- ui->tablewt_examList->verticalHeader()->setDefaultSectionSize(g_appInfoPtr->m_fRate*48);
- ui->tablewt_examList->setColumnWidth(0, g_appInfoPtr->m_fRate*116);
- ui->tablewt_examList->setColumnWidth(1, g_appInfoPtr->m_fRate*56);
- ui->tablewt_examList->setColumnWidth(2, g_appInfoPtr->m_fRate*104);
- ui->tablewt_examList->setColumnWidth(3, g_appInfoPtr->m_fRate*277);
- ui->tablewt_examList->setColumnWidth(4, g_appInfoPtr->m_fRate*305);
- ui->tablewt_examList->setColumnWidth(5, g_appInfoPtr->m_fRate*102);
- ui->tablewt_examList->setColumnWidth(6, g_appInfoPtr->m_fRate*146);
- ui->tablewt_examList->horizontalHeader()->setStretchLastSection(true);
- ui->tablew_finishExamList->setEditTriggers(QAbstractItemView::NoEditTriggers);
- //整行选中的方式
- ui->tablew_finishExamList->setSelectionBehavior(QAbstractItemView::SelectRows);
- //设置为只能选中一行
- ui->tablew_finishExamList->setSelectionMode(QAbstractItemView::SingleSelection);
- //隐藏列表头
- ui->tablew_finishExamList->verticalHeader()->setVisible(false);
- //隐藏边框
- ui->tablew_finishExamList->setShowGrid(false);
- //表头不高亮显示
- ui->tablew_finishExamList->horizontalHeader()->setHighlightSections(false);
- //设置行数
- ui->tablew_finishExamList->setRowCount(10);
- //设置列数
- ui->tablew_finishExamList->setColumnCount(7);
- ui->tablew_finishExamList->setHorizontalScrollMode(QTableWidget::ScrollPerPixel);
- ui->tablew_finishExamList->horizontalScrollBar()->setSingleStep(g_appInfoPtr->m_fRate*5);
- ui->tablew_finishExamList->setHorizontalHeaderLabels(sHeadStr);
- ui->tablew_finishExamList->horizontalHeader()->setDefaultAlignment(Qt::AlignLeft | Qt::AlignVCenter);
- ui->tablew_finishExamList->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed);
- ui->tablew_finishExamList->verticalHeader()->setDefaultSectionSize(g_appInfoPtr->m_fRate*48);
- ui->tablew_finishExamList->setColumnWidth(0, g_appInfoPtr->m_fRate*116);
- ui->tablew_finishExamList->setColumnWidth(1, g_appInfoPtr->m_fRate*56);
- ui->tablew_finishExamList->setColumnWidth(2, g_appInfoPtr->m_fRate*104);
- ui->tablew_finishExamList->setColumnWidth(3, g_appInfoPtr->m_fRate*277);
- ui->tablew_finishExamList->setColumnWidth(4, g_appInfoPtr->m_fRate*305);
- ui->tablew_finishExamList->setColumnWidth(5, g_appInfoPtr->m_fRate*102);
- ui->tablew_finishExamList->setColumnWidth(6, g_appInfoPtr->m_fRate*146);
- ui->tablew_finishExamList->horizontalHeader()->setStretchLastSection(true);
- }
- void clOnlineExam::showEvent(QShowEvent *)
- {
- refreshExam();
- }
- void clOnlineExam::refreshExam()
- {
- CHttpRequestPackage hrp;
- hrp.sUri = "/api/ecs_oe_admin/client/exam/process/queryExamList";
- hrp.nRequestType = RequestType::rtQueryExamList;
- g_httpBllPtr->post(hrp);
- CHttpRequestPackage hrp1;
- hrp1.sUri = "/api/ecs_oe_admin/client/exam/process/queryExamEndList";
- hrp1.nRequestType = RequestType::rtQueryExamEndList;
- g_httpBllPtr->post(hrp1);
- }
- void clOnlineExam::onQueryExamList(CQueryExamList queryExamList)
- {
- if (queryExamList.nCode == 200)
- {
- qDebug() << "onQueryExamList";
- int nSize = queryExamList.vOnlieExamList.size();
- ui->tablewt_examList->setRowCount(nSize);
- for (int i = 0; i < nSize; ++i)
- {
- CExamCourseInfo eci = queryExamList.vOnlieExamList[i];
- ui->tablewt_examList->setItem(i, 0, new QTableWidgetItem(eci.sCourseName));
- ui->tablewt_examList->setItem(i, 1, new QTableWidgetItem(eci.sCourseLevel));
- ui->tablewt_examList->setItem(i, 2, new QTableWidgetItem(eci.sSpecialtyName));
- ui->tablewt_examList->setItem(i, 3, new QTableWidgetItem(QString::fromLocal8Bit("%1 ~ %2").arg(eci.sStartTime).arg(eci.sEndTime)));
- QString sWeekCycle = CWeekTransform::getWeekCycles(eci.vExamCycleWeek);
- QString sTimeRange = eci.sExamCycleTimeRange.join(QString::fromLocal8Bit(","));
- QDateTime dtCurrent = QDateTime::fromMSecsSinceEpoch(g_appInfoPtr->serverMTime());
- QDateTime dtStartTime = QDateTime::fromString(eci.sStartTime, "yyyy-MM-dd hh:mm:ss");
- QDateTime dtEndTime = QDateTime::fromString(eci.sEndTime, "yyyy-MM-dd hh:mm:ss");
- bool bIsInExamTime = dtCurrent > dtStartTime && dtCurrent < dtEndTime;
- QString sWeek = dtCurrent.toString("ddd");
- bool bIsInWeek = sWeekCycle.size() == 0 || sWeekCycle.indexOf(sWeek) >= 0;
- QTime tCurrent = QDateTime::fromMSecsSinceEpoch(g_appInfoPtr->serverMTime()).time();
- bool bIsInTimeRange = eci.sExamCycleTimeRange.size() == 0 || CWeekTransform::isInTimeRange(tCurrent, eci.sExamCycleTimeRange);
- ui->tablewt_examList->setItem(i, 4, new QTableWidgetItem(QString::fromLocal8Bit("%1 %2").arg(sWeekCycle).arg(sTimeRange)));
- ui->tablewt_examList->setItem(i, 5, new QTableWidgetItem(QString::number(eci.nAllowExamCount)));
- clOperation *clo = new clOperation(i, ui->tablewt_examList);
- clo->setUI(ui->tablewt_examList->columnWidth(6), ui->tablewt_examList->rowHeight(i), CL_OPERATION_TYPE::cot_online_exam);
- clo->setBtn1Enable(bIsInWeek && bIsInTimeRange && bIsInExamTime && eci.nAllowExamCount>0);
- clo->setBtn2Enable(eci.bIsObjScoreView);
- ui->tablewt_examList->setCellWidget(i, 6, clo);
- connect(clo, &clOperation::enterExam, this, [&](CL_OPERATION_TYPE cot, int nRow){
- if (cot == CL_OPERATION_TYPE::cot_online_exam )
- {
- QString sWeekCycle = CWeekTransform::getWeekCycles(m_vOnlieExamList[nRow].vExamCycleWeek);
- QString sTimeRange = m_vOnlieExamList[nRow].sExamCycleTimeRange.join(QString::fromLocal8Bit(","));
- QDateTime dtCurrent = QDateTime::fromMSecsSinceEpoch(g_appInfoPtr->serverMTime());
- QDateTime dtStartTime = QDateTime::fromString(m_vOnlieExamList[nRow].sStartTime, "yyyy-MM-dd hh:mm:ss");
- QDateTime dtEndTime = QDateTime::fromString(m_vOnlieExamList[nRow].sEndTime, "yyyy-MM-dd hh:mm:ss");
- bool bIsInExamTime = dtCurrent > dtStartTime && dtCurrent < dtEndTime;
- QString sWeek = dtCurrent.toString("ddd");
- bool bIsInWeek = sWeekCycle.size() == 0 || sWeekCycle.indexOf(sWeek) >= 0;
- QTime tCurrent = QDateTime::fromMSecsSinceEpoch(g_appInfoPtr->serverMTime()).time();
- bool bIsInTimeRange = m_vOnlieExamList[nRow].sExamCycleTimeRange.size() == 0 || CWeekTransform::isInTimeRange(tCurrent, m_vOnlieExamList[nRow].sExamCycleTimeRange);
- if(bIsInWeek && bIsInTimeRange && bIsInExamTime && m_vOnlieExamList[nRow].nAllowExamCount > 0)
- {
- emit enterExam(cot, m_vOnlieExamList[nRow].nExamId, m_vOnlieExamList[nRow].nExamStudentId,
- m_vOnlieExamList[nRow].sCourseCode, m_vOnlieExamList[nRow].sCourseName);
- }
- }
- });
- connect(clo, &clOperation::showObjectiveScore, this, [&](CL_OPERATION_TYPE cot, int nRow) {
- if (cot == CL_OPERATION_TYPE::cot_online_exam )
- {
- m_pObjectiveScoreTimer->stop();
-
- if (m_pObjectiveScore != nullptr &&
- m_pObjectiveScore->getRow() != nRow)
- {
- m_pObjectiveScore.reset();
- }
-
- if (m_pObjectiveScore == nullptr)
- {
- m_pObjectiveScore = std::make_shared<clObjectiveScore>(nRow, QString::number(m_vOnlieExamList[nRow].nExamStudentId), this);
- connect(m_pObjectiveScore.get(), &clObjectiveScore::objectiveScoreHeight, this, [&](int nRow, int nHeight) {
- int ntableTop = ui->tabw_onlineExam->y() + g_appInfoPtr->m_fRate*70;
- int nTop = ntableTop + (nRow + 2)* ui->tablewt_examList->verticalHeader()->defaultSectionSize() - nHeight / 2;
- if (nHeight > ui->tabw_onlineExam->height())
- {
- nHeight = ui->tabw_onlineExam->height();
- }
- if (nTop < ui->tabw_onlineExam->y())
- {
- nTop = ui->tabw_onlineExam->y();
- }
- else if ((nTop + nHeight) > (ntableTop + ui->tablewt_examList->height()))
- {
- nTop = ntableTop + ui->tablewt_examList->height() - nHeight;
- }
- m_pObjectiveScore->setUI(ui->tablewt_examList->x() + ui->tablewt_examList->width() - ui->tablewt_examList->columnWidth(6) - g_appInfoPtr->m_fRate * 530,
- nTop, g_appInfoPtr->m_fRate * 530, nHeight);
- m_pObjectiveScore->show();
- });
-
- }
- }
-
- });
- connect(clo, &clOperation::hideObjectiveScore, this, [&](CL_OPERATION_TYPE cot, int nRow) {
- if (cot == CL_OPERATION_TYPE::cot_online_exam)
- {
- m_pObjectiveScoreTimer->start();
- }
- });
- }
- m_vOnlieExamList.swap(queryExamList.vOnlieExamList);
- }
- else
- {
- if(queryExamList.sMessage.isEmpty())
- {
- ShowMsg(QString::fromLocal8Bit("获取在线考试信息失败"), (QWidget*)(this->parent()), MSG_ICON_TYPE::mit_error);
- }
- else
- {
- ShowMsg(queryExamList.sMessage, (QWidget*)(this->parent()), MSG_ICON_TYPE::mit_error);
- }
- }
- }
- void clOnlineExam::onQueryExamEndList(CQueryExamEndList queryExamEndList)
- {
- if (queryExamEndList.nCode == 200)
- {
- int nSize = queryExamEndList.vOnlieEndExamList.size();
- ui->tablew_finishExamList->setRowCount(nSize);
- for (int i = 0; i < nSize; ++i)
- {
- CExamCourseInfo eci = queryExamEndList.vOnlieEndExamList[i];
- ui->tablew_finishExamList->setItem(i, 0, new QTableWidgetItem(eci.sCourseName));
- ui->tablew_finishExamList->setItem(i, 1, new QTableWidgetItem(eci.sCourseLevel));
- ui->tablew_finishExamList->setItem(i, 2, new QTableWidgetItem(eci.sSpecialtyName));
- ui->tablew_finishExamList->setItem(i, 3, new QTableWidgetItem(QString::fromLocal8Bit("%1 ~ %2").arg(eci.sStartTime).arg(eci.sEndTime)));
- QString sWeekCycle = CWeekTransform::getWeekCycles(eci.vExamCycleWeek);
- QString sTimeRange = eci.sExamCycleTimeRange.join(",");
-
- ui->tablew_finishExamList->setItem(i, 4, new QTableWidgetItem(QString::fromLocal8Bit("%1 %2").arg(sWeekCycle).arg(sTimeRange)));
- ui->tablew_finishExamList->setItem(i, 5, new QTableWidgetItem(QString::number(eci.nAllowExamCount)));
- clOperation *clo = new clOperation(i, ui->tablew_finishExamList);
- clo->setUI(ui->tablew_finishExamList->columnWidth(6), ui->tablew_finishExamList->rowHeight(i), CL_OPERATION_TYPE::cot_online_finish_exam);
- clo->setBtn1Enable(eci.bIsObjScoreView);
- ui->tablew_finishExamList->setCellWidget(i, 6, clo);
- connect(clo, &clOperation::showObjectiveScore, this, [&](CL_OPERATION_TYPE cot, int nRow) {
- if (cot == CL_OPERATION_TYPE::cot_online_finish_exam )
- {
- m_pObjectiveScoreTimer->stop();
- if (m_pObjectiveScore != nullptr &&
- m_pObjectiveScore->getRow() != nRow)
- {
- m_pObjectiveScore.reset();
- }
- if (m_pObjectiveScore == nullptr)
- {
- m_pObjectiveScore = std::make_shared<clObjectiveScore>(nRow, QString::number(m_vOnlieEndExamList[nRow].nExamStudentId), this);
- connect(m_pObjectiveScore.get(), &clObjectiveScore::objectiveScoreHeight, this, [&](int nRow, int nHeight) {
- int ntableTop = ui->tablew_finishExamList->y() + g_appInfoPtr->m_fRate*70;
- int nTop = ntableTop + (nRow + 2)* ui->tablew_finishExamList->verticalHeader()->defaultSectionSize() - nHeight / 2;
- if (nHeight > ui->tabw_onlineExam->height())
- {
- nHeight = ui->tabw_onlineExam->height();
- }
- if (nTop < ui->tablew_finishExamList->y())
- {
- nTop = ui->tablew_finishExamList->y();
- }
- else if ((nTop + nHeight) > (ntableTop + ui->tablew_finishExamList->height()))
- {
- nTop = ntableTop + ui->tablew_finishExamList->height() - nHeight;
- }
- m_pObjectiveScore->setUI(ui->tablew_finishExamList->x() + ui->tablew_finishExamList->width() - ui->tablew_finishExamList->columnWidth(6) - g_appInfoPtr->m_fRate * 530,
- nTop, g_appInfoPtr->m_fRate * 530, nHeight);
- m_pObjectiveScore->show();
- });
- }
- }
- });
- connect(clo, &clOperation::hideObjectiveScore, this, [&](CL_OPERATION_TYPE cot, int nRow) {
- if (cot == CL_OPERATION_TYPE::cot_online_finish_exam)
- {
- m_pObjectiveScoreTimer->start();
- }
- });
- }
- m_vOnlieEndExamList.swap(queryExamEndList.vOnlieEndExamList);
- }
- else
- {
- if(queryExamEndList.sMessage.isEmpty())
- {
- ShowMsg(QString::fromLocal8Bit("获取在线考试信息失败"), (QWidget*)(this->parent()), MSG_ICON_TYPE::mit_error);
- }
- else
- {
- ShowMsg(queryExamEndList.sMessage, (QWidget*)(this->parent()), MSG_ICON_TYPE::mit_error);
- }
- }
- }
- void clOnlineExam::on_btn_examList_clicked()
- {
- ui->tabw_onlineExam->setCurrentIndex(0);
- ui->btn_examList->setStyleSheet(QString(R"(QPushButton{
- outline:none;
- border-radius:%1px;
- border:0px solid rgba(255,255,255,1);
- background:rgba(19, 187, 138, 1);
- font-size:%2px;
- font-family:"Microsoft YaHei";
- font-weight:500;
- color:rgba(255,255,255,1);
- })").arg((int)(g_appInfoPtr->m_fRate*15))
- .arg((int)(g_appInfoPtr->m_fRate*12)));
- ui->btn_endExamList->setStyleSheet(QString(R"(QPushButton{
- outline:none;
- border-radius:%1px;
- border:0px solid rgba(255,255,255,1);
- background:rgba(239, 240, 245, 1);
- font-size:%2px;
- font-family:"Microsoft YaHei";
- font-weight:500;
- color:rgba(153, 153, 153, 1);
- })").arg((int)(g_appInfoPtr->m_fRate*15))
- .arg((int)(g_appInfoPtr->m_fRate*12)));
- }
- void clOnlineExam::on_btn_endExamList_clicked()
- {
- ui->tabw_onlineExam->setCurrentIndex(1);
- ui->btn_endExamList->setStyleSheet(QString(R"(QPushButton{
- outline:none;
- border-radius:%1px;
- border:0px solid rgba(255,255,255,1);
- background:rgba(19, 187, 138, 1);
- font-size:%2px;
- font-family:"Microsoft YaHei";
- font-weight:500;
- color:rgba(255,255,255,1);
- })").arg((int)(g_appInfoPtr->m_fRate*15))
- .arg((int)(g_appInfoPtr->m_fRate*12)));
- ui->btn_examList->setStyleSheet(QString(R"(QPushButton{
- outline:none;
- border-radius:%1px;
- border:0px solid rgba(255,255,255,1);
- background:rgba(239, 240, 245, 1);
- font-size:%2px;
- font-family:"Microsoft YaHei";
- font-weight:500;
- color:rgba(153, 153, 153, 1);
- })").arg((int)(g_appInfoPtr->m_fRate*15))
- .arg((int)(g_appInfoPtr->m_fRate*12)));
- }
- void clOnlineExam::on_btn_refresh_clicked()
- {
- ui->btn_refresh->setEnabled(false);
- refreshExam();
- m_pRefreshTimer->start();
- m_nRefreshSeconds = 20;
- ui->btn_refresh->setText(QString::fromLocal8Bit("倒计时%1s").arg(m_nRefreshSeconds));
- }
|