Como llegar a la entrada de la parte posterior de diálogo en vista de árbol pyqt5 Python 3

Gary Lester:

Tengo una vista de árbol y cuando un usuario hace clic en la columna del tipo de datos no es un cuadro de diálogo que aparece a cabo

Vista de árbol

Aquí está el cuadro de diálogo

introducir descripción de la imagen aquí

Me gustaría saber el mejor método para actualizar mi árbol con un valor en el cuadro de diálogo.

He tratado de quitar y el setItem pero la fila que estoy recibiendo de mi objeto de índice no es siempre el índice de la fila si esa fila es un niño y no un padre.

Este código funciona y cambia el valor en el árbol

datadialog = DataDialogNoParent()
datadialog.popDialogBox(index)
datadialog.exec_()
self.model.setItem(index.row(),index.column(),QStandardItem(datadialog.choice))

Cuando intento cambiar estos elementos secundarios consigo resultados extraños utilizando la fila y la columna del objeto QModelIndex.

introducir descripción de la imagen aquí

musicamante :

tl; dr

Uso self.model.setData(index, datadialog.choice, QtCore.Qt.DisplayRole).

Explicación

Veamos los argumentos de setItem():

QStandardItemModel.setItem(row, column, item)

You can only give a row and a column. How should the model know if you want to set a child item? And child of what?

setItem() only works for two-dimensional data models (aka, tables), but you're using the model as a tree, which means that each index could have its own children indexes (each one having its row and column relative to its parent).
What you get from index.row() and index.column() is referred to the coordinates relative to the index parent().

In your case, the highlighted item is at row 1 and column 1, so using setItem() will result in setting the item at the second row and column of the model root (assuming that an item exists at those coordinates).

Usando setDatapermite configurar los datos de un índice específico, ya que utiliza sus tres coordenadas para hacerlo: fila, columna y los padres . Tenga en cuenta que el QtCore.Qt.DisplayRolese requiere argumento, ya que por defecto QStandardItemModel usos EditRole.

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=392675&siteId=1
Recomendado
Clasificación