Cómo iterar y ordenar los elementos de QGridLayout
Tengo un QGridLayout con 225 hijos de QTextEdit. Necesito poblar una matriz QString board[15][15] con sus valores de texto basados en la posición de cada QTextEdit. Si hacía esto de la larga manera, se vería así:
boardArray[0][0] = ui->box0x0->toPlainText();
boardArray[0][1] = ui->box0x1->toPlainText();
boardArray[0][2] = ui->box0x2->toPlainText();
…
Eso parece una solución bastante mala. Así que decidí iterar sobre los hijos de QTextEdit de la cuadrícula para poder manipular cada uno;
QList<QTextEdit> textEdits = ui->gridLayout->findChildren
for (QTextEdit
// Sin embargo, no sabemos dónde está esta caja
board[ ??? ][ ??? ] = box->toPlainText();
}
Desafortunadamente, no hay una propiedad QTextEdit.row o algo así, por lo que no sé en qué orden están o cómo podría poblar mi matriz de tablero sin que sea aleatorio.
¿Tienen alguna idea de cómo puedo organizar los widgets QTextEdit en mi matriz de tablero? No estaba seguro de cómo hacerlo con esa técnica de iteración.
davy.ai
Parece que estás intentando llenar un arreglo
QString board[15][15]
con los valores textuales de 225 widgetsQTextEdit
que son hijos de unQGridLayout
. Desafortunadamente, no existe una propiedad deQTextEdit.row
o algo así, por lo que no sabes el orden en que están o cómo podrías llenar el arregloboard
sin que sea aleatorio.Una posible solución es usar el método
QGridLayout::getItemPosition()
para obtener la fila y columna de cada widgetQTextEdit
. Luego, puedes usar esta información para llenar tu arregloboard
.Por ejemplo:
Esto debería permitirte llenar tu arreglo
board
con los valores de texto de cada widgetQTextEdit
en el orden correcto.</qtextedit*>