qt - personalizada - aprendizaje personalizado segun autores
¿Qué se debe hacer para un modelo personalizado para permitir la colocación? (2)
Finalmente me di cuenta de esto por mi cuenta.
Resulta que el problema era que en la función de indicadores, en el caso de los índices no válidos no había podido devolver el indicador ItemIsDropEnabled. Un índice no válido es la señal para el nodo raíz, es decir, el área de la vista donde no había elementos, por lo que el espacio vacío no era droppable.
Esto ha sido difícil de detectar porque he estado tratando de usar Drop para agregar elementos a mi árbol, y por lo tanto no había ninguno sin colocar, lo que significa que todo lo que vi fue el círculo con una barra.
Estoy intentando habilitar Drop en un modelo personalizado que he conectado a QTreeView
.
He hecho lo siguiente:
- Aseguró que acceptDrops esté habilitado en
QTreeView
- Implementado en mi modelo personalizado
supportedDropActions
parareturn Qt::CopyAction | Qt::MoveAction
return Qt::CopyAction | Qt::MoveAction
- Implementado en mi modelo personalizado
mimeType
s para devolver unQStringList
con texto / uri-list - Implementado en mi modelo personalizado
dropMimeData
para manejar el drop si alguna vez ocurrió.
Esto es todo lo que necesitaba para hacerlo funcionar en un QTreeWidget
.
He pasado a:
-
return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDropEnabled;
implementados parareturn Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDropEnabled;
return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDropEnabled;
Sin embargo, cuando ejecuto mi aplicación e intento arrastrar un archivo en Windows a mi QTreeView
, obtengo ese círculo no permitido de estilo Cazafantasmas con una barra que lo atraviesa.
¿Qué más debo hacer para habilitar las gotas?
Para aquellos que enfrentan problemas similares, quiero señalar que es necesario devolver Qt::CopyAction
entre las acciones de Qt::CopyAction
admitidas. Qt::MoveAction
solo no funcionará.