31 #include "templates/quiz/quizitem.h"
33 #include "definitions/definitions.h"
36 QuizItem::QuizItem(QWidget *parent) : QWidget(parent), m_state(Unanswered), m_ui(new Ui::
QuizItem) {
39 QFont caption_font = m_ui->m_lblQuestionNumber->font();
40 caption_font.setPointSize(caption_font.pointSize() + SIMULATOR_HEADER_SIZE_INCREASE);
41 m_ui->m_lblQuestionNumber->setFont(caption_font);
47 QuizItem::~QuizItem() {
51 void QuizItem::setupButtons() {
52 m_answerButtons = QList<QRadioButton*>();
53 m_answerButtons.append(m_ui->m_rbAnswerOne);
54 m_answerButtons.append(m_ui->m_rbAnswerTwo);
55 m_answerButtons.append(m_ui->m_rbAnswerThree);
56 m_answerButtons.append(m_ui->m_rbAnswerFour);
59 void QuizItem::createConnections() {
60 connect(m_ui->m_btnNext, SIGNAL(clicked()),
this, SLOT(onNextClicked()));
61 connect(m_ui->m_btnConfirm, SIGNAL(clicked()),
this, SLOT(onSubmitClicked()));
62 connect(m_ui->m_rbAnswerOne, SIGNAL(toggled(
bool)), m_ui->m_lblWarning, SLOT(hide()));
63 connect(m_ui->m_rbAnswerTwo, SIGNAL(toggled(
bool)), m_ui->m_lblWarning, SLOT(hide()));
64 connect(m_ui->m_rbAnswerThree, SIGNAL(toggled(
bool)), m_ui->m_lblWarning, SLOT(hide()));
65 connect(m_ui->m_rbAnswerFour, SIGNAL(toggled(
bool)), m_ui->m_lblWarning, SLOT(hide()));
68 void QuizItem::clearStylesheets() {
69 foreach (QRadioButton *answer_button, m_answerButtons) {
70 answer_button->setStyleSheet(QString());
75 m_question = question;
77 m_ui->m_rbAnswerOne->setText(question.answerOne());
78 m_ui->m_rbAnswerTwo->setText(question.answerTwo());
79 m_ui->m_rbAnswerThree->setText(question.answerThree());
80 m_ui->m_rbAnswerFour->setText(question.answerFour());
82 m_ui->m_rbAnswerOne->setVisible(question.
correctAnswer() == 0 || !question.answerOne().simplified().isEmpty());
83 m_ui->m_rbAnswerTwo->setVisible(question.
correctAnswer() == 1 || !question.answerTwo().simplified().isEmpty());
84 m_ui->m_rbAnswerThree->setVisible(question.
correctAnswer() == 2 || !question.answerThree().simplified().isEmpty());
85 m_ui->m_rbAnswerFour->setVisible(question.
correctAnswer() == 3 || !question.answerFour().simplified().isEmpty());
87 m_ui->m_lblQuestionNumber->setText(tr(
"Question number %1 of %2").arg(QString::number(question_number),
88 QString::number(total_questions)));
89 m_ui->m_lblQuestionText->setText(question.question());
99 foreach (QRadioButton *answer_button, m_answerButtons) {
101 answer_button->setEnabled(
false);
102 answer_button->setCheckable(
false);
103 answer_button->setChecked(
false);
104 answer_button->setEnabled(
true);
105 answer_button->setCheckable(
true);
108 m_ui->m_lblWarning->setVisible(
false);
109 m_ui->m_btnConfirm->setEnabled(
true);
110 m_state = Unanswered;
113 void QuizItem::onNextClicked() {
118 void QuizItem::onSubmitClicked() {
120 if (!m_ui->m_rbAnswerOne->isChecked() && !m_ui->m_rbAnswerTwo->isChecked() &&
121 !m_ui->m_rbAnswerThree->isChecked() && !m_ui->m_rbAnswerFour->isChecked()) {
123 m_ui->m_lblWarning->setText(
"Select some answer, please.");
124 m_ui->m_lblWarning->setVisible(
true);
127 int selected_answer = 0;
130 for (
int i = 0; i < m_answerButtons.size(); i++) {
131 if (m_answerButtons.at(i)->isChecked()) {
137 m_ui->m_lblWarning->setText(
"That is correct answer.");
138 m_answerButtons.at(selected_answer)->setStyleSheet(
"background-color: green;");
139 m_state = AnsweredCorrectly;
142 m_ui->m_lblWarning->setText(
"That is wrong answer.");
143 m_answerButtons.at(selected_answer)->setStyleSheet(
"background-color: red;");
144 m_answerButtons.at(m_question.
correctAnswer())->setStyleSheet(
"background-color: green;");
145 m_state = AnsweredWrongly;
148 foreach (QRadioButton *button, m_answerButtons) {
149 button->setEnabled(
false);
152 m_ui->m_btnConfirm->setEnabled(
false);
153 m_ui->m_lblWarning->setVisible(
true);
void reset()
Resets widget for the question to its original/default state.
Widget which represents single question in Quiz.
State state() const
Access to state of quiz question widget.
void setQuestion(const QuizQuestion &question, int question_number, int total_questions)
Sets new question for this widget.
State
Enum containing possible states for widget for the question.
int correctAnswer() const
Access to inde of correct answer.
void questionSubmitted()
Emitted if users clicks "Next" or "Submit".
Container for one question.