#include "awQuestionNavigate.h" #include "ui_awQuestionNavigate.h" #include "CAppInfo.h" #include "CCommonTools.h" #include awQuestionNavigate::awQuestionNavigate(CPaperGroupStruct &pgs, QWidget *parent) : QWidget(parent), ui(new Ui::awQuestionNavigate), m_pgs(pgs) { ui->setupUi(this); setStyleSheet(g_appInfoPtr->m_sQssStr); } awQuestionNavigate::~awQuestionNavigate() { delete ui; } int awQuestionNavigate::setUI(const int nWidth) { ui->label_questionName->setText(QString::fromLocal8Bit("%1%2").arg(CCommonTools::Arab2Sinogram(m_pgs.nNumber)).arg(m_pgs.sGroupName)); ui->label_questionScore->setText(QString::fromLocal8Bit("%1分").arg(m_pgs.fGroupScore)); ui->widget_qn_groupInfo->setGeometry(0, 0, nWidth, g_appInfoPtr->m_fRate*50); ui->label_questionName->adjustSize(); ui->label_questionName->setGeometry(0, g_appInfoPtr->m_fRate*20, ui->label_questionName->width(), ui->label_questionName->height()); ui->label_questionScore->adjustSize(); ui->label_questionScore->setGeometry(ui->widget_qn_groupInfo->width() - ui->label_questionScore->width(), ui->label_questionName->y() + (ui->label_questionName->height() - ui->label_questionScore->height())/2, ui->label_questionScore->width(), ui->label_questionScore->height()); QGridLayout *layout = new QGridLayout; layout->setHorizontalSpacing(g_appInfoPtr->m_fRate*10); layout->setVerticalSpacing(g_appInfoPtr->m_fRate*10); layout->setAlignment(Qt::AlignLeft); layout->setContentsMargins(0, 0, 0, 0); m_vItemList.clear(); int nTotal = 0; int nQuestionSize = m_pgs.vQuestionStruct.size(); for(int i = 0; i < nQuestionSize; ++i) { CQuestionStruct &qs = m_pgs.vQuestionStruct[i]; int nSubQuestionSize = qs.vSubQuestionStruct.size(); for(int j = 0; j < nSubQuestionSize; ++j) { CSubQuestionStruct &sqs = qs.vSubQuestionStruct[j]; awqn_item *item = new awqn_item(sqs); connect(item, &awqn_item::showSubQuestion, this, [&](int nOrder) { emit showSubQuestion(qs.sQuestionId, nOrder, qs.bHasContent); }); item->setFixedSize(g_appInfoPtr->m_fRate * 30, g_appInfoPtr->m_fRate * 30); layout->addWidget(item, (sqs.nShowNumber + 4)/5 - 1, (sqs.nShowNumber - 1)%5, 1, 1); item->setUI(); m_vItemList.push_back(item); nTotal++; } } int nRow = (nTotal + 4)/5; ui->widget_qn_questionList->setGeometry(0, ui->widget_qn_groupInfo->y() + ui->widget_qn_groupInfo->height(), nWidth, nRow*40*g_appInfoPtr->m_fRate); ui->widget_qn_questionList->setLayout(layout); setGeometry(0, 0, nWidth, ui->widget_qn_questionList->height() + ui->widget_qn_groupInfo->height()); return height(); } void awQuestionNavigate::refreshStatus() { int nSize = m_vItemList.size(); for(int i = 0; i < nSize; ++i) { awqn_item *item = m_vItemList[i]; if(item) { item->refreshStatus(); } } } void awQuestionNavigate::setShowType(ITEM_SHOW_TYPE type) { int nIndex = 1; int nSize = m_vItemList.size(); for(int i = 0; i < nSize; ++i) { awqn_item *item = m_vItemList[i]; if(item) { if(type == ITEM_SHOW_TYPE::ist_showAll) { item->setVisible(true); } else if(type == ITEM_SHOW_TYPE::ist_showMarked) { if(item->isMarked()) { item->setVisible(true); } else { item->setVisible(false); } } else if(type == ITEM_SHOW_TYPE::ist_showAnswered) { if(item->isAnswered()) { item->setVisible(true); } else { item->setVisible(false); } } else if(type == ITEM_SHOW_TYPE::ist_showUnanswered) { if(!item->isAnswered()) { item->setVisible(true); } else { item->setVisible(false); } } } } }