// Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause #include "tetrixboard.h" #include "tetrixwindow.h" #include #include #include #include #include //! [0] TetrixWindow::TetrixWindow(QWidget *parent) : QWidget(parent), board(new TetrixBoard) { //! [0] nextPieceLabel = new QLabel; nextPieceLabel->setFrameStyle(QFrame::Box | QFrame::Raised); nextPieceLabel->setAlignment(Qt::AlignCenter); board->setNextPieceLabel(nextPieceLabel); //! [1] scoreLcd = new QLCDNumber(5); scoreLcd->setSegmentStyle(QLCDNumber::Filled); //! [1] levelLcd = new QLCDNumber(2); levelLcd->setSegmentStyle(QLCDNumber::Filled); linesLcd = new QLCDNumber(5); linesLcd->setSegmentStyle(QLCDNumber::Filled); //! [2] startButton = new QPushButton(tr("&Start")); startButton->setFocusPolicy(Qt::NoFocus); quitButton = new QPushButton(tr("&Quit")); quitButton->setFocusPolicy(Qt::NoFocus); pauseButton = new QPushButton(tr("&Pause")); //! [2] //! [3] pauseButton->setFocusPolicy(Qt::NoFocus); //! [3] //! [4] connect(startButton, &QPushButton::clicked, board, &TetrixBoard::start); //! [4] //! [5] connect(quitButton , &QPushButton::clicked, qApp, &QCoreApplication::quit); connect(pauseButton, &QPushButton::clicked, board, &TetrixBoard::pause); connect(board, &TetrixBoard::scoreChanged, scoreLcd, qOverload(&QLCDNumber::display)); connect(board, &TetrixBoard::levelChanged, levelLcd, qOverload(&QLCDNumber::display)); connect(board, &TetrixBoard::linesRemovedChanged, linesLcd, qOverload(&QLCDNumber::display)); //! [5] //! [6] QGridLayout *layout = new QGridLayout; layout->addWidget(createLabel(tr("NEXT")), 0, 0); layout->addWidget(nextPieceLabel, 1, 0); layout->addWidget(createLabel(tr("LEVEL")), 2, 0); layout->addWidget(levelLcd, 3, 0); layout->addWidget(startButton, 4, 0); layout->addWidget(board, 0, 1, 6, 1); layout->addWidget(createLabel(tr("SCORE")), 0, 2); layout->addWidget(scoreLcd, 1, 2); layout->addWidget(createLabel(tr("LINES REMOVED")), 2, 2); layout->addWidget(linesLcd, 3, 2); layout->addWidget(quitButton, 4, 2); layout->addWidget(pauseButton, 5, 2); setLayout(layout); setWindowTitle(tr("Tetrix")); resize(550, 370); } //! [6] //! [7] QLabel *TetrixWindow::createLabel(const QString &text) { QLabel *label = new QLabel(text); label->setAlignment(Qt::AlignHCenter | Qt::AlignBottom); return label; } //! [7]