#include "cell.h" #include <QPushButton> #include <QDebug> #include <QSignalMapper> Cell::Cell(QWidget *parent) : QWidget(parent) { // Set size of the window // Create and position the button setAutoFillBackground(true); setStyleSheet("background-color:gray;"); setFixedSize(100, 100); float w = width() / 3.0; float h = height() / 3.0; QSignalMapper *mapper = new QSignalMapper(this); connect(mapper, SIGNAL(mapped(int)), this, SLOT(collapse(int))); for (char i = 0; i < 9; i++) { m_states[i] = new QPushButton(QString::number(i + 1), this); m_states[i]->setGeometry(i % 3 * w, i / 3 * h, w, h); m_states[i]->setStyleSheet("border:none"); connect(m_states[i], SIGNAL(clicked()), mapper, SLOT(map())); mapper->setMapping(m_states[i], i); m_blocked[i] = 0; } m_number = new QPushButton(this); m_number->setFixedSize(100, 100); m_number->setStyleSheet("font-size:44px"); m_number->hide(); connect(m_number,SIGNAL(clicked()),this,SLOT(un())); } void Cell::collapse(int x) { collapsed = true; m_number->show(); m_number->setText(QString::number(x + 1)); emit(update(x)); } void Cell::removeOption(int x) { // states[x]->hide(); if (m_states[x]->isEnabled()) { m_states[x]->setDisabled(true); possibleStates--; index.erase(std::find(index.begin(), index.end(), x)); } m_blocked[x] ++; } void Cell::addOption(int x) { m_blocked[x] --; //if (!m_states[x]->isEnabled()) if (m_blocked[x]<1) { m_states[x]->setDisabled(false); possibleStates++; index.push_back(x); } } void Cell::un(void){ collapsed = false; m_number->hide(); emit(undo(m_number->text().toInt()-1)); }