Skip to content
Snippets Groups Projects
Commit 8eddd1ef authored by Silas Dohm's avatar Silas Dohm
Browse files

responsive layout

parent 82bd0a58
No related branches found
No related tags found
1 merge request!3responsive design
...@@ -17,7 +17,6 @@ Cell::Cell(QWidget *parent) : QWidget(parent) ...@@ -17,7 +17,6 @@ Cell::Cell(QWidget *parent) : QWidget(parent)
for (char i = 0; i < 9; i++) for (char i = 0; i < 9; i++)
{ {
m_states[i] = new QPushButton(QString::number(i + 1), this); m_states[i] = new QPushButton(QString::number(i + 1), this);
m_states[i]->setSizePolicy(QSizePolicy::MinimumExpanding,QSizePolicy::MinimumExpanding);
layout->addWidget(m_states[i], i % 3, i / 3); layout->addWidget(m_states[i], i % 3, i / 3);
m_states[i]->setStyleSheet("border:none"); m_states[i]->setStyleSheet("border:none");
connect(m_states[i], SIGNAL(clicked()), mapper, SLOT(map())); connect(m_states[i], SIGNAL(clicked()), mapper, SLOT(map()));
...@@ -31,10 +30,16 @@ Cell::Cell(QWidget *parent) : QWidget(parent) ...@@ -31,10 +30,16 @@ Cell::Cell(QWidget *parent) : QWidget(parent)
m_stackedWidget = new QStackedWidget(this); m_stackedWidget = new QStackedWidget(this);
m_stackedWidget->addWidget(groupBox); m_stackedWidget->addWidget(groupBox);
m_stackedWidget->addWidget(m_number); m_stackedWidget->addWidget(m_number);
m_stackedWidget->setSizePolicy(QSizePolicy::MinimumExpanding,QSizePolicy::MinimumExpanding); setMinimumSize(70, 70);
heightForWidth(this->width()); }
setMinimumSize(100,100);
//m_stackedWidget->setFixedSize(70,70); void Cell::resizeEvent(QResizeEvent *event)
{
QWidget::resizeEvent(event);
m_stackedWidget->setFixedSize(this->size());
int smallest = this->width() < this->height() ? this->width() : this->height();
m_number->setStyleSheet("font-size:" + QString::number(smallest / 2) + "px;");
return;
} }
void Cell::collapse(int x) void Cell::collapse(int x)
...@@ -46,10 +51,10 @@ void Cell::collapse(int x) ...@@ -46,10 +51,10 @@ void Cell::collapse(int x)
} }
void Cell::removeOption(int x) void Cell::removeOption(int x)
{ {
// states[x]->hide(); if (m_blocked[x] == 0)
if (m_states[x]->isEnabled())
{ {
m_states[x]->setDisabled(true); m_states[x]->setDisabled(true);
m_states[x]->setText(" ");
possibleStates--; possibleStates--;
index.erase(std::find(index.begin(), index.end(), x)); index.erase(std::find(index.begin(), index.end(), x));
} }
...@@ -62,12 +67,14 @@ void Cell::addOption(int x) ...@@ -62,12 +67,14 @@ void Cell::addOption(int x)
// if (!m_states[x]->isEnabled()) // if (!m_states[x]->isEnabled())
if (m_blocked[x] < 1) if (m_blocked[x] < 1)
{ {
m_states[x]->setText(QString::number(x + 1));
m_states[x]->setDisabled(false); m_states[x]->setDisabled(false);
possibleStates++; possibleStates++;
index.push_back(x); index.push_back(x);
} }
} }
void Cell::un(void){ void Cell::un(void)
{
collapsed = false; collapsed = false;
m_stackedWidget->setCurrentIndex(0); m_stackedWidget->setCurrentIndex(0);
emit(undo(m_number->text().toInt() - 1)); emit(undo(m_number->text().toInt() - 1));
......
...@@ -2,14 +2,14 @@ ...@@ -2,14 +2,14 @@
#define CELL_H #define CELL_H
#include <QWidget> #include <QWidget>
#include <QStackedWidget>
class QPushButton; class QPushButton;
class QStackedWidget;
class Cell : public QWidget class Cell : public QWidget
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit Cell(QWidget *parent = 0); explicit Cell(QWidget *parent = 0);
void resizeEvent(QResizeEvent *event);
int possibleStates = 9; int possibleStates = 9;
bool collapsed = false; bool collapsed = false;
std::vector<int> index = {0, 1, 2, 3, 4, 5, 6, 7, 8}; std::vector<int> index = {0, 1, 2, 3, 4, 5, 6, 7, 8};
......
...@@ -24,17 +24,24 @@ Window::Window(QWidget *parent) ...@@ -24,17 +24,24 @@ Window::Window(QWidget *parent)
m_slider->setValue(m_delay); m_slider->setValue(m_delay);
connect(m_slider, SIGNAL(valueChanged(int)), this, SLOT(setValue(int))); connect(m_slider, SIGNAL(valueChanged(int)), this, SLOT(setValue(int)));
QHBoxLayout *horizontalLayout = new QHBoxLayout(this); QHBoxLayout *horizontalLayout = new QHBoxLayout(this);
QVBoxLayout *verticalLayout = new QVBoxLayout(); QVBoxLayout *verticalLayout = new QVBoxLayout();
QGridLayout *layout = new QGridLayout(); QGridLayout *layout = new QGridLayout();
m_spacer[0] = new QSpacerItem(8, 8, QSizePolicy::Minimum, QSizePolicy::Fixed);
m_spacer[1] = new QSpacerItem(8, 8, QSizePolicy::Minimum, QSizePolicy::Fixed);
m_spacer[2] = new QSpacerItem(8, 8, QSizePolicy::Minimum, QSizePolicy::Expanding);
verticalLayout->addItem(m_spacer[2]);
verticalLayout->addWidget(m_solveButton); verticalLayout->addWidget(m_solveButton);
verticalLayout->addWidget(m_slider); verticalLayout->addWidget(m_slider);
verticalLayout->addWidget(m_clearButton); verticalLayout->addWidget(m_clearButton);
horizontalLayout->addLayout(layout, 5); horizontalLayout->addLayout(layout, 5);
horizontalLayout->addLayout(verticalLayout, 1); horizontalLayout->addLayout(verticalLayout, 1);
layout->addItem(m_spacer[0], 3, 3);
layout->addItem(m_spacer[1], 7, 7);
layout->setSpacing(0);
int dx = 0; int dx = 0;
int dy = 0; int dy = 0;
...@@ -43,8 +50,7 @@ Window::Window(QWidget *parent) ...@@ -43,8 +50,7 @@ Window::Window(QWidget *parent)
for (int y = 0; y < 9; y++) for (int y = 0; y < 9; y++)
{ {
m_cell[x + y * 9].setParent(this); m_cell[x + y * 9].setParent(this);
layout->addWidget(&m_cell[x+y*9],y,x); layout->addWidget(&m_cell[x + y * 9], y + y / 3, x + x / 3);
// connecting signals & slots // connecting signals & slots
for (int d = 0; d < 9; d++) // rows and columns for (int d = 0; d < 9; d++) // rows and columns
{ {
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include <QProgressBar> #include <QProgressBar>
#include <QSlider> #include <QSlider>
#include "cell.h" #include "cell.h"
class QSpacerItem;
class Window : public QWidget class Window : public QWidget
{ {
Q_OBJECT Q_OBJECT
...@@ -15,11 +16,10 @@ public: ...@@ -15,11 +16,10 @@ public:
private: private:
QPushButton *m_clearButton; QPushButton *m_clearButton;
QPushButton *m_solveButton; QPushButton *m_solveButton;
QPushButton *grid[9][9];
QProgressBar *m_progressBar;
QSlider *m_slider; QSlider *m_slider;
std::array<Cell, 81> m_cell; std::array<Cell, 81> m_cell;
int m_delay = 300; int m_delay = 300;
QSpacerItem *m_spacer[3];
struct History struct History
{ {
Cell *cell; Cell *cell;
...@@ -27,7 +27,8 @@ private: ...@@ -27,7 +27,8 @@ private:
History(Cell *c, std::vector<int> in, int choice) History(Cell *c, std::vector<int> in, int choice)
{ {
cell = c; cell = c;
for(int i=0;i<in.size();i++){ for (int i = 0; i < in.size(); i++)
{
if (i == choice) if (i == choice)
continue; continue;
index.push_back(in[i]); index.push_back(in[i]);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment