首页 > 解决方案 > 在 QSettings 中保存矩阵

问题描述

我正在开发我的 qt 国际象棋游戏,特别是持久性,所以当 MainWindow 关闭时,我必须保存代表棋盘状态的 int 矩阵。我已经编写了该函数,并且它与我为测试提供的矩阵一起工作得很好

MainWindow::~MainWindow()
{
    int boardState2[8][8] = { {-5, -3, -4, -9,  0, -4, -3, -5},
                              {-1,  0,  0, -1,  0, -1, -1, -1},
                              { 0,  0,  0,  0, -1, -2,  0,  0},
                              { 0,  0, -1,  0,  0,  0,  0,  0},
                              { 0, -1,  0,  1,  1,  4,  0,  0},
                              { 0,  0,  0,  0,  0,  0,  0,  0},
                              { 1,  1,  1,  0,  0,  1,  1,  1},
                              { 5,  3,  0,  9,  2,  4,  3,  5} };
   
    session.setBoardState(boardState2);
}

此代码在“MainWindow.cpp”文件中,我不会显示 setBoardState 函数,因为它按我说的那样工作,而是问题是我应该在这个 boardState2 中复制真实矩阵,以便将其存储在设置文件中使用该 setBoardState 函数。问题是真实矩阵在另一个文件“Piece.cpp”中,它是一个全局 int 矩阵。我不知道如何将它从“Piece.cpp”传递到“MainWindow.cpp”......我在想3个解决方案:

  1. 通过一些我不知道的函数将矩阵从一个 .cpp 传递到另一个
  2. 在 Piece 析构函数中调用该session.setBoardState()函数,但这里的问题是我必须将 Session 类(具有 QSettings)用作单例。我已经尝试过了,但是我的 Session 构造函数有问题
  3. 将真实矩阵保存在 .txt 文件中,然后从 MainWindow.cpp 中读取

如果您需要更多信息,我将编辑此帖子,希望您能帮助我

标签: c++qt

解决方案


c++ 关键字extern可以帮助您。使用extern您可以使用在其他 cpp 文件中定义的全局矩阵。


推荐阅读