Hej, zacząłem uczyć się Qt z tej książki: http://www.arxen.com/descargas/Books/Game%20Programming%20Using%20Qt%205,%20Begginer%27s%20Gu%20-%20Witold%20Wysota,%20Lorenz%20Haas.pdf
Utknąłem na stronie 38. Oto mój kod:
*.h
#ifndef TICTACTOEWIDGET_H
#define TICTACTOEWIDGET_H
#include <QWidget>
#include <QPushButton>
#include <QGridLayout>
class QPushButton;
class TicTacToeWidget : public QWidget {
Q_OBJECT
public:
TicTacToeWidget(QWidget *parent = nullptr);
~TicTacToeWidget();
private:
QGridLayout *gridLayout;
QList<QPushButton*> board;
void setupBoard();
void initNewGame();
};
#endif // TICTACTOEWIDGET_H
*.cpp
#include "tictactoewidget.h"
#include "ui_tictactoewidget.h"
#include <QPushButton>
#include <QGridLayout>
#include <QSignalMapper>
TicTacToeWidget::TicTacToeWidget(QWidget *parent)
: QWidget(parent) {
setupBoard();
setLayout(gridLayout);
}
TicTacToeWidget::~TicTacToeWidget() {}
void TicTacToeWidget::setupBoard() {
gridLayout = new QGridLayout(this);
QSignalMapper* mapper = new QSignalMapper(this);
for(int row = 0; row < 3; ++row) {
for(int column = 0; column < 3; ++column) {
QPushButton *button = new QPushButton;
button->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum);
button->setText(" ");
gridLayout->addWidget(button, row, column);
board.append(button);
mapper->setMapping(button, board.count()-1);
connect(button, SINGAL(clicked())), mapper, SLOT(map()));
}
}
}
void TicTacToeWidget::initNewGame() {
for(int i=0; i<9; ++i) board.at(i)->setText(" ");
}
Problemy mam takie:
26: błąd: use of undeclared identifier 'clicked'
17: ostrzeżenie: 'QSignalMapper' is deprecated
Jak zobaczyłem że w książce w przykładach pokazane jest używanie nieaktualnych już klas to zacząłem się zastanawiać czy warto się z niej jeszcze uczyć, miał ktoś może jakiś kontakt z nią? Czy powinienem ją kontynuować? Druga sprawa dotyczy oczywiście funkcji clicked()...
Z góry dziękuje za pomoc w rozwiązaniu problemów i rady :)