私人变量以某种方式神秘地改变

时间:2013-05-10 03:59:57

标签: c++ qt

我有NetBeans + Qt + MinGW。

你能告诉我程序中发生了什么吗?我在QtGlass.cpp的第一个循环中放置了一个断点(在下面的注释中标记为Breakpoint)。 Arrow_n是一个表示按键事件的int。如果我按任意箭头键,我只想画我的身材。

好吧,我在外圈。

i = 5
Falcon.get_x()+Falcon.get_width() = 7

然后我在内循环中。

j = 5
Falcon.get_y()+Falcon.get_height() = 7

在内循环Falcon.get_x() = 261的下一次迭代中。 在内循环Falcon.get_x() = 65797的下一次迭代中。

如果我停止调试并再次启动它,我会得到相同的数字。 因此,这些261和65697的出现有一些规律性。 但是,对于我来说,如果current_xcurrent_y从那时起没有改变,那怎么可能是个谜。我甚至没有任何改变它们的设置方法。

你能帮我理解发生了什么吗?

然后我开始调试。

Figure.h

class Figure: public QObject{
    Q_OBJECT
public:
    bool shape[4][4];
private:
    int current_x;
    int current_y;
    int height;
    int width;

public:
    Figure();
    int testint;
    int test[2];
    int get_x();
    int get_y();
    int get_height();
    int get_width();

Figure.cpp

Figure:: Figure(){
    current_x = 5;
    current_y = 5;
    height = 2;
    width = 2;
}

int Figure:: get_x(){
    return current_x;
}

int Figure:: get_y(){
    return current_y;
}

int Figure::get_height(){
    return height;
}

int Figure::get_width(){
    return width;
}

QtGlass.cpp

void QtGlass::paintEvent(QPaintEvent *event) {
    QPainter painter(this);
    Figure Falcon;

    glassRedraw(painter);
    painter.setPen(QPen(Qt::red, 4));

    if (arrow_n > 0) {
        for (int i = Falcon.get_x(); i < (Falcon.get_x()+Falcon.get_width()); i++){ //Breakpoint.
            for (int j = Falcon.get_y(); j < (Falcon.get_y()+Falcon.get_height()); j++){
                if (Falcon.is_cell_filled(i,j)){
                    painter.fillRect(i * 30, j * 30, 29, 29, QBrush(Qt::green, Qt::SolidPattern));
                }
            }
        }
    }

0 个答案:

没有答案