wheels pyside2 for creator qt qt4 pyqt pyside

pyside2 - qt for python



Los valores de acceso de dropActions en el modelo(PySide/PyQt/Qt) (1)

En un QTableModel cuando ingreso lo siguiente:

print model.supportedDropActions()

Acabo de obtener:

<PyQt4.QtCore.DropActions object at 0x00000000081172E8>

¿Cómo puedo acceder a una lista real de las acciones de caída admitidas desde este objeto? En la documentación , dice: "El tipo DropActions es un typedef para QFlags. Almacena una combinación OR de valores DropAction".

Tenga en cuenta que estoy haciendo esto en Python (PySide).

Artículos Relacionados:


Fondo

Primero, asegúrese de comprender cómo funciona la codificación bit a bit para estos indicadores. Aquí hay descripciones realmente buenas en las respuestas aceptadas:

Todos los que usan Qt y sus parientes deberían leerlos, ahorrarán muchos dolores de cabeza si alguna vez quisieran extraer información de los valores codificados en bits.

Solución

Si bien lo siguiente no es para acciones de abandono, sino para roles de datos de ítems, los principios son exactamente los mismos. Como se mencionó en los comentarios en la publicación original, puede volver a codificar el valor codificado como int y luego decodificarlo en un formato legible por humanos utilizando la enumeración (es decir, la traducción entre entero y función) proporcionada por Qt en línea. No sé por qué a veces los documentos representan los números enteros como hexadecimales contra decimales.

En lo que sigue, representé la enumeración que encontré en línea en un diccionario con la clave int como, y la descripción de cadena legible por humanos como valor. Luego use una función que arroje el rol de int para hacer la traducción, utilizando ese diccionario.

#Create a dictionary of all data roles dataRoles = {0: ''DisplayRole'', 1: ''DecorationRole'', 2: ''EditRole'', 3: ''ToolTipRole'',/ 4: ''StatusTipRole'', 5: ''WhatsThisRole'', 6: ''FontRole'', 7: ''TextAlignmentRole'',/ 8: ''BackgroundRole'', 9: ''ForegroundRole'', 10: ''CheckStateRole'', 13: ''SizeHintRole'',/ 14: ''InitialSortOrderRole'', 32: ''UserRole''} #Return role in a human-readable format def roleToString(flagDict, role): recastRole = int(role) #recast role as int roleDescription = flagDict[recastRole] return roleDescription

Luego, para usarlo, por ejemplo, en un modelo donde los roles se están lanzando y quiero ver lo que está haciendo:

print "Current data role: ", roleToString(dataRoles, role)

Hay diferentes maneras de hacerlo, pero me parece muy intuitivo y fácil de usar.