He añadido una etiqueta como imagen (icono) a un widget en Qt. Quiero mostrar un menú emergente cuando el usuario hace clic (clic izquierdo o derecho) en la etiqueta. ¿Cómo puedo lograr esto? Por favor, ayuda ...Qt - Menú emergente
Respuesta
Querrás configurar el ContextMenuPolicy
del widget, luego conectar el evento customContextMenuRequested
a alguna ranura que mostrará el menú.
Ver: Qt and context menu
Si desea mostrar un menú contextual cada vez que se hace clic en la etiqueta (con cualquier botón del ratón), supongo que tendrá que implementar su propia clase Label
, heredando QLabel
y gastos de la ventana emergente menú por ti mismo en caso de un evento de mouse.
Aquí es una versión muy simplificada (pero trabajando):
class Label : public QLabel
{
public:
Label(QWidget* pParent=0, Qt::WindowFlags f=0) : QLabel(pParent, f) {};
Label(const QString& text, QWidget* pParent = 0, Qt::WindowFlags f = 0) : QLabel(text, pParent, f){};
protected :
virtual void mouseReleaseEvent (QMouseEvent * ev) {
QMenu MyMenu(this);
MyMenu.addActions(this->actions());
MyMenu.exec(ev->globalPos());
}
};
Esta clase especializada Label
se mostrará en el menú emergente de todas las acciones añaden a ella. .
Digamos que la ventana principal de la aplicación se llama MainFrm
y está mostrando la etiqueta (label
Aquí es cómo se vería el constructor:
MainFrm::MainFrm(QWidget *parent) : MainFrm(parent), ui(new Ui::MainFrm)
{
ui->setupUi(this);
QAction* pAction1 = new QAction("foo", ui->label);
QAction* pAction2 = new QAction("bar", ui->label);
QAction* pAction3 = new QAction("test", ui->label);
ui->label->addAction(pAction1);
ui->label->addAction(pAction2);
ui->label->addAction(pAction3);
connect(pAction1, SIGNAL(triggered()), this, SLOT(onAction1()));
connect(pAction2, SIGNAL(triggered()), this, SLOT(onAction2()));
connect(pAction3, SIGNAL(triggered()), this, SLOT(onAction3()));
}
Si una etiqueta se puede hacer clic, es lógicamente una "Pruebas botón "y no una" etiqueta "más.
sugeriría a utilizar QToolButton lugar, y utilizar QSS para compensar el botón de herramienta a una etiqueta.
- 1. Creación de un menú emergente en Qt para QTableView
- 2. Menú emergente Android
- 3. Delphi Menú emergente cheques
- 4. Cómo cambiar el color del menú emergente
- 5. iOS burbuja menú emergente similar a iTunes
- 6. ¿Cómo agregar elementos en el menú emergente?
- 7. Creación de menú contextual con Qt Designer (Qt Creator IDE)
- 8. QT y elemento de menú personalizado (QLineEdit)
- 9. ¿Cómo configurar el menú emergente para la barra de encabezado ListView junto con el menú emergente de elementos?
- 10. Buscando el componente de menú emergente radial para Delphi
- 11. ¿Cómo mostrar una ventana que actúa como un menú emergente?
- 12. ¿Cómo hacer un menú emergente con la barra de desplazamiento?
- 13. Completar menú emergente sin archivo XML en android
- 14. Interceptar el botón Menú de Android en una ventana emergente
- 15. Cómo crear un menú emergente con submenú en Java
- 16. cómo asignar teclas para el menú emergente en vim
- 17. Mostrando un menú emergente en QGraphicsScene, haga clic o haga clic con el botón derecho
- 18. Cómo atenuar un elemento de menú en Qt
- 19. Averiguar qué elemento de menú se activó en Qt
- 20. Xcode 4 deshabilitar "emergente" emergente
- 21. Ventana emergente en winforms
- 22. Python: Ventana emergente de PyQt
- 23. PyQt y menú contextual
- 24. wpf popup no se cierra automáticamente cuando datagrid dentro del menú emergente captura el mouse
- 25. ventana emergente en el menú contextual de las extensiones de cromo
- 26. Encontrar la fila JTable en la que se ha invocado un menú emergente
- 27. Menú emergente al hacer clic en un botón en acción Barra
- 28. ¿Cuál es el truco para inspeccionar el estilo de menú emergente/desplegable con Firebug?
- 29. Elemento de la lista de pulsación larga para abrir el menú emergente
- 30. ¿Cuál es el componente que hace clic en un menú emergente originado de
¿Qué desea exactamente: un menú emergente cuando se solicita el menú contextual (clic derecho) o un menú emergente cada vez que se hace clic en la etiqueta, independientemente de que sea el botón izquierdo o derecho? –