#include "cell.h" #include <QPushButton> #include <QToolButton> #include <QDebug> #include <QSignalMapper> #include <QGridLayout> #include <QStackedWidget> #include <QGroupBox> Cell::Cell(QWidget *parent) : QWidget(parent) { mapper = new QSignalMapper(this); connect(mapper, SIGNAL(mapped(int)), this, SLOT(collapse(int))); groupBox = new QGroupBox(); gridLayout = new QGridLayout(); setStyleSheet("border: 1px solid #1e282c; border-radius: 0px;background-color:#52585d;"); for (char i = 0; i < 9; i++) { states[i] = new QPushButton(QString::number(i + 1), this); gridLayout->addWidget(states[i], i / 3, i % 3); states[i]->setStyleSheet("border:none"); connect(states[i], SIGNAL(clicked()), mapper, SLOT(map())); mapper->setMapping(states[i], i); blocked[i] = 0; } groupBox->setLayout(gridLayout); number = new QPushButton(this); connect(number, SIGNAL(clicked()), this, SLOT(collapsedCellClicked())); stackedWidget = new QStackedWidget(this); stackedWidget->addWidget(groupBox); stackedWidget->addWidget(number); setMinimumSize(70, 70); } void Cell::resizeEvent(QResizeEvent *event) { QWidget::resizeEvent(event); stackedWidget->setFixedSize(this->size()); int smallest = this->width() < this->height() ? this->width() : this->height(); number->setStyleSheet("font-size:" + QString::number(smallest / 2) + "px;"); return; } void Cell::collapse(int x) { collapsed = true; stackedWidget->setCurrentIndex(1); number->setText(QString::number(x + 1)); emit update(x); } void Cell::removeOption(int x) { if (blocked[x] == 0) { states[x]->setText(" "); states[x]->setDisabled(true); possibleStates--; } blocked[x]++; } void Cell::addOption(int x) { blocked[x]--; if (blocked[x] < 1) { states[x]->setText(QString::number(x + 1)); states[x]->setDisabled(false); possibleStates++; } } void Cell::collapsedCellClicked(void) { collapsed = false; stackedWidget->setCurrentIndex(0); emit undo(number->text().toInt() - 1); }