C++ 创建标签数组的有效方法

C++ 创建标签数组的有效方法,c++,arrays,qt,user-interface,label,C++,Arrays,Qt,User Interface,Label,我正在做一个棋盘游戏,我需要在gui中显示一个15 x 15的数组。我决定使用单个标签,其中包含数组的一个元素。这意味着我有相当多的标签。我给每个标签命名为“tile\u 0\u 0”,第一个0是行,第二个0是列。这在qt中很容易做到 然而问题是,我当然不能简单地使用2个forloop来访问每个tile,因为您不能在名称中使用变量。(“tile_i_j”不存在。)为了解决这个问题,我决定制作一个包含每个标签的数组。但是,由于前面提到的问题,我无法有效地初始化阵列 所以问题是:我如何避免编写一大块

我正在做一个棋盘游戏,我需要在gui中显示一个15 x 15的数组。我决定使用单个标签,其中包含数组的一个元素。这意味着我有相当多的标签。我给每个标签命名为“tile\u 0\u 0”,第一个0是行,第二个0是列。这在qt中很容易做到

然而问题是,我当然不能简单地使用2个forloop来访问每个tile,因为您不能在名称中使用变量。(“tile_i_j”不存在。)为了解决这个问题,我决定制作一个包含每个标签的数组。但是,由于前面提到的问题,我无法有效地初始化阵列

所以问题是:我如何避免编写一大块代码? 当前代码的一小部分:

    Ui::BoardView *ui = new UI::BoardView; // BoardView is my class
    QLabel* m_boardLbArray[8][8];
    m_boardLbArray[0][0] = ui->tile_0_0;
    m_boardLbArray[0][1] = ui->tile_0_1;
    m_boardLbArray[0][2] = ui->tile_0_2;
    m_boardLbArray[0][3] = ui->tile_0_3;
    m_boardLbArray[0][4] = ui->tile_0_4;
    // ...

注意:很抱歉,我没有发布一部分代码,您可以简单地复制并运行,但我不知道如何操作,因为它与gui相关。

听起来像是在Qt Designer中创建平铺(Qlabel);实现这一点的一个更简洁的方法是通过编程创建它们。您可以在Designer中将网格布局添加到所需位置的表单中,然后执行以下操作:

QGridLayout *layout = ui->gridlayout;
QLabel* m_boardLbArray[8][8];
for(int row=0; row<8; row++)
  for(int col=0; col<8; col++)
  {
    m_boardLbArray[row][col] = new QLabel(this);
    m_boardLbArray[row][col]->setText(tr("This is row %1, col %2")
      .arg(row).arg(col));
    layout->addWidget(m_boardLbArray[row][col], row, col);
  }
QGridLayout*layout=ui->gridlayout;
QLabel*m_boardLbArray[8][8];
for(int row=0;rowaddWidget(m_boardLbArray[row][col],row,col));
}

听起来您是在Qt Designer中创建互动程序(Qlabel);实现这一点的更简洁的方法是通过编程方式创建它们。您可以在Designer中将网格布局添加到所需位置的表单中,然后执行以下操作:

QGridLayout *layout = ui->gridlayout;
QLabel* m_boardLbArray[8][8];
for(int row=0; row<8; row++)
  for(int col=0; col<8; col++)
  {
    m_boardLbArray[row][col] = new QLabel(this);
    m_boardLbArray[row][col]->setText(tr("This is row %1, col %2")
      .arg(row).arg(col));
    layout->addWidget(m_boardLbArray[row][col], row, col);
  }
QGridLayout*layout=ui->gridlayout;
QLabel*m_boardLbArray[8][8];
for(int row=0;rowaddWidget(m_boardLbArray[row][col],row,col));
}

不幸的是,除了使用宏之外,没有简单的方法。为什么要使用
平铺0\u 0
平铺0\u 1
,而不是简单地将它们存储在一个数组中?不知道怎么做。请告诉我。不幸的是,除了使用宏之外,没有简单的方法。为什么要使用
平铺0\u 0
平铺0\u 1
,等,而不是简单地存储在一个数组中放在首位?不知道如何。请告诉我。