【发布时间】:2018-06-09 11:47:10
【问题描述】:
我在 Qt 中遇到以下问题,我正在尝试制作象棋游戏,但遇到了一些问题:
在类 mainwindow 我有以下功能:
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
scene = new ChessBoard;
QGraphicsView *view = new QGraphicsView(scene);
setCentralWidget(view);
connect(scene,SIGNAL(clicked(int,int)),this,SLOT(clicked(int,int)));
//!!!!!!!!!!
scene->setInitialPositions();
}
我有一个变量场景,场景是 ChessBoard 类的对象。 在整个类 mainwindow 中,我可以使用场景变量来使用 ChessBoard 中声明的函数。
但是,我还有一个名为 game 的课程。 在游戏我有这个功能
void game::setStartBord() {
scene->setInitialPositions();
}
只需启动scene->setInitialPositions();
但是,我无法访问那里的“场景变量”。我尝试继承 ChessBoard 和 MainWindow 类,尝试使场景全局化,但没有一个真正是好的解决方案。
我该怎么做? 完整代码可见这里: https://github.com/UA-Niel/chess
【问题讨论】:
-
game类的确切目的是什么?听起来你需要重新设计你的课程...... -
您可能希望将 setInitialPositions() 设为插槽。并使用信号和槽让它执行。
标签: c++ qt class inheritance