Я пишу тетрис. Это моя реализация стекла. Я просто хочу рисовать то, что внутри. Int означает цвет (int glass_array [10] [22];).Qt: в переменной int я хочу сохранить информацию о цвете
Теперь я хочу узнать, как использовать эти цвета. Для учебных целей я создаю два кубика и хочу, чтобы они были разных цветов. Скажем, красный и зеленый. Но оба они оказались синими.
Не могли бы вы мне помочь?
QtGlass.h
class QtGlass : public QFrame {
Q_OBJECT
public:
void paintEvent(QPaintEvent * event);
QtGlass(QWidget *parent);
bool key_pressed;
void keyPressEvent(QKeyEvent* event);
protected:
void glassRedraw(QPainter &painter);
int glass_array[10][22];
};
QtGlass.cpp
QtGlass::QtGlass(QWidget *parent): QFrame(parent) {
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 22; j++) {
glass_array[i][j] = 0; //0 - Default color (grey);
}
}
for (int i = 8; i < 10; i++) {
for (int j = 20; j < 22; j++) {
glass_array[i][j] = QColor(Qt::green).value(); // green
}
}
for (int i = 0; i < 2; i++) {
for (int j = 20; j < 22; j++) {
glass_array[i][j] = QColor(Qt::red).value(); // red
}
}
}
void QtGlass::paintEvent(QPaintEvent *event) {
QPainter painter(this);
Figure Falcon;
glassRedraw(painter);
painter.setPen(QPen(Qt::red, 4));
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 22; j++) {
if (glass_array[i][j] > 0) {
painter.fillRect(i* 31+ 1, j * 31 + 1, 29, 29,
QBrush(QColor(glass_array[i][j]), Qt::SolidPattern));
}
}
}
}
почему не 'QColor glass_array [10] [22]; '? – CapelliC
Я думаю, он хочет сохранить использование памяти, и я думаю, что он не делает это правильно. сохраняя их, поскольку QColor избавит его от создания и уничтожения объекта QColor с каждым событием окраски: D –