如何对QGridLayout项进行迭代和排序



我有一个QGridLayout,有225个孩子QTextEdit。我需要使用基于每个QTextEdit的位置的文本值来填充QString board[15][15]数组。如果我用的方式做这件事,我会这样做:

boardArray[0][0] = ui->box0x0->toPlainText();
boardArray[0][1] = ui->box0x1->toPlainText();
boardArray[0][2] = ui->box0x2->toPlainText();
...

这似乎是一个非常糟糕的解决方案。因此,我决定迭代网格的QTextEdit子级,这样我就可以操作每一个;

QList<QTextEdit*> textEdits = ui->gridLayout->findChildren<QTextEdit *>();
for (QTextEdit* box : textEdits) {
// We don't know where this box is though
board[ ??? ][ ??? ] = box->toPlainText();
}

不幸的是,没有QTextEdit.row属性或任何东西,所以我不知道它们的顺序,也不知道如何在不随机的情况下填充board数组。

你们对我如何将QTextEdit小部件组织到我的board数组中有什么想法吗?我不确定如何使用迭代技术来做到这一点。

网格布局上的迭代应该可以工作,大致如下(我还没有测试过(:

for (int i{0}; i < ui->gridLayout->rowCount(); ++i)
{
for (int j{0}; j < ui->gridLayout->columnCount(); ++j)
{
auto* textEdit{static_cast<QTextEdit*>(ui->gridLayout->itemAtPosition(i, j)->widget()};
board[i][j] = textEdit->toPlainText();
}
}

最新更新