我有 NetBeans + Qt + MinGW。
你能告诉我我的程序发生了什么吗?我在 QtGlass.cpp 的第一个循环中放置了一个断点(在下面的评论中标记为断点)。
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_x
从那时current_y
起就没有改变过。我什至没有任何更改它们的设置方法。
你能帮我理解发生了什么吗?
然后我开始调试。
图.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();
图.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));
}
}
}
}