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. iOS burbuja menú emergente similar a iTunes
- 5. ¿Cómo agregar elementos en el menú emergente?
- 6. Cómo cambiar el color del 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. ¿Cómo mostrar una ventana que actúa como un menú emergente?
- 11. ¿Cómo hacer un menú emergente con la barra de desplazamiento?
- 12. Cómo crear un menú emergente con submenú en Java
- 13. cómo asignar teclas para el menú emergente en vim
- 14. Interceptar el botón Menú de Android en una ventana emergente
- 15. Completar menú emergente sin archivo XML en android
- 16. Buscando el componente de menú emergente radial para Delphi
- 17. Creación de un menú emergente para iPhone similar al menú de aplicación de correo
- 18. Mostrando un menú emergente en QGraphicsScene, haga clic o haga clic con el botón derecho
- 19. Cómo atenuar un elemento de menú en Qt
- 20. Averiguar qué elemento de menú se activó en Qt
- 21. Xcode 4 deshabilitar "emergente" emergente
- 22. Ventana emergente en winforms
- 23. Python: Ventana emergente de PyQt
- 24. PyQt y menú contextual
- 25. ¿Cuál es el componente que hace clic en un menú emergente originado de
- 26. Elemento de la lista de pulsación larga para abrir el menú emergente
- 27. Encontrar la fila JTable en la que se ha invocado un menú emergente
- 28. Menú emergente al hacer clic en un botón en acción Barra
- 29. wpf popup no se cierra automáticamente cuando datagrid dentro del menú emergente captura el mouse
- 30. ¿Cuál es el truco para inspeccionar el estilo de menú emergente/desplegable con Firebug?
¿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? –