我有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_x
和current_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));
}
}
}
}