我在写俄罗斯方块。 这是我对玻璃的实施。我只是想画出它里面的东西。 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 2013-05-10 15:30:47
我想他想保留内存使用情况,我想他没有做对。保持它们为QColor将使他无法创建和销毁每个绘画事件中的QColor对象:D – 2013-05-10 15:33:04