e网科技网站,html音乐网页设计模板,苏州网站优化找哪家,百度推广服务说明
本文记录了自己在写一个五子棋游戏中的所遇到的一个问题#xff0c;我被这个小问题卡了好久才解决。作为一个Qt小白 #xff0c;如有错误请多多包含#xff0c;并可以在评论区留言~~
方案一
widget类#xff08;相当于游戏主菜单#xff09;
// widget.h
Chessbo…说明
本文记录了自己在写一个五子棋游戏中的所遇到的一个问题我被这个小问题卡了好久才解决。作为一个Qt小白 如有错误请多多包含并可以在评论区留言~~
方案一
widget类相当于游戏主菜单
// widget.h
Chessboard chessboard; // 棋盘对象
Game_control gamecontrol; // 游戏控制对象// widget.cpp
connect(chessboard, SIGNAL(GameOver(int)), gamecontrol, SLOT(GameIsOver(int)));chessboard类
// chessboard.h
signals:void GameOver(int winner); // 游戏结束的信号// chessboard.cpp
void Chessboard::CheckWinner(){emit GameOver(winner);qDebug()finish1;
}Game_control类
// Game_control.h
public slots:void GameIsOver(int winner); // 游戏结束槽函数// Game_control.cpp
void Game_control::GameIsOver(int winner){qDebug()finish2;
}方案二
方案一中如果在Game_control.cpp里添加Chessboard chessboard;和connect(chessboard, SIGNAL(GameOver(int)), this, SLOT(GameIsOver(int)));之后会发现无法输出finish2。
// Game_control.h
public slots:void GameIsOver(int winner); // 游戏结束槽函数// Game_control.cpp
Chessboard chessboard;
connect(chessboard, SIGNAL(GameOver(int)), this, SLOT(GameIsOver(int)));void Game_control::GameIsOver(int winner){qDebug()finish2;
}可能的原因是Game_control类中的chessboard和widget类中的重复定义。 删除widget里的chessboard而只在Game_control中定义之后再次运行可以看到成功输出finish2。