pyside2 qt pyqt pyside

qt - pyside2



QDialog: cómo usar el botón de signo de interrogación(?)? (3)

Las otras respuestas fueron un poco engañosas para mí, enfocándome solo en captar el evento del signo de interrogación, pero sin explicar el uso normal.

Cuando se hace clic en este botón y se activa WhatsThisMode , se supone que los elementos del cuadro de diálogo brindan información sobre ellos mismos. Y si el mouse se desplaza sobre un elemento que admite esta información, el puntero se convertirá en una flecha apuntando con un signo de interrogación (al menos en Windows), con un mensaje de información sobre herramientas que se muestra al hacer clic con el mouse.

He aquí cómo lograrlo en PySide:

someWidget.setWhatsThis("Help on widget")

QWhatsEsta documentación para PySide y Qt5 también está disponible.

Por defecto, QDialog ventanas de QDialog tienen un botón de interrogación en la esquina superior derecha. Cuando lo presiono, el cursor del mouse se cambia al cursor ''Prohibido'', y parece que no pasa nada más.

Si bien hay mucha información generada por aquellos que desean eliminar el signo de interrogación ( al menos tres hilos SO están dedicados al tema), la documentación de QDialog no tiene nada acerca de cómo usarla realmente.

¿Cómo hago para que mi aplicación muestre información cuando se hace clic en el signo de interrogación? Por ejemplo, ¿cómo obtengo la señal de clicked del botón? Mejor aún, ¿dónde está documentado este botón?


Basado en la respuesta de Chernobyl, así es como lo hice en Python (PySide):

def event(self, event): if event.type() == QtCore.QEvent.EnterWhatsThisMode: print "click" return True return QtGui.QDialog.event(self, event)

Es decir, el event reimplemento cuando la aplicación ingresa a ''WhatsThisMode''. De lo contrario, devuelve el control a la clase base.

Casi funciona. La única arruga es que el cursor del mouse se sigue convirtiendo en la forma ''Prohibida''. Basado en otra publicación , me deshice de eso agregando:

QtGui.QWhatsThis.leaveWhatsThisMode()

Como la línea justo antes del comando de impresión en el anterior.


No es un botón documentado por Qt. Puede detectar esto capturando eventos y verificando el tipo de evento:

http://qt-project.org/doc/qt-5/qevent.html#Type-enum

Hay diferentes tipos como QEvent::EnterWhatsThisMode QEvent::WhatsThisClicked y así sucesivamente. Logré algo similar a lo que estás buscando usando el filtro de eventos en la ventana principal.

if(event->type() == QEvent::EnterWhatsThisMode) qDebug() << "click";

Vi "hacer clic" cuando hice clic en ? botón.