Ho aggiunto un'etichetta come immagine (icona) a un widget in Qt. Desidero visualizzare un menu a comparsa quando l'utente fa clic (clic sinistro o destro) sull'etichetta. Come posso ottenere questo? Per favore aiuto ...Qt - Menu di scelta rapida
risposta
Dovrai impostare il ContextMenuPolicy
del widget, quindi connettere l'evento customContextMenuRequested
ad uno slot che visualizzerà il menu.
See: Qt and context menu
Se si desidera visualizzare un menu di scelta rapida ogni volta che l'etichetta si fa clic (con qualsiasi tasto del mouse), credo che si dovrà implementare la propria Label
classe, che eredita QLabel
e la manipolazione del popup menu da soli in caso di un evento del mouse.
Ecco una versione molto semplificata (ma di lavoro):
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());
}
};
Questa specializzato Label
classe visualizzerà nel menu a comparsa tutte le azioni aggiunto ad essa. .
Diciamo che la finestra principale dell'applicazione è chiamato MainFrm
e visualizza l'etichetta (label
Ecco come il costruttore apparirebbe:
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()));
}
Se un'etichetta è cliccabile, è logicamente un "testuale tasto "e non un" un'etichetta "più.
vorrei suggerire di usare QToolButton invece, e utilizzare QSS per compensare il toolbutton a un'etichetta.
#define SS_TOOLBUTTON_TEXT(_normal, _hover, _disabled) \
"QToolButton" "{" \
"background:transparent" \
"color:" #_normal ";" \
"}" \
"QToolButton:hover" "{" \
"color:" #_hover ";" \
"}" \
"QToolButton:disabled" "{" \
"color:" #_disabled ";" \
"}"
....
QToolButton *b = new QToolButton; {
b->setToolButtonStyle(Qt::ToolButtonTextOnly);
b->setStyleSheet(SS_TOOLBUTTON_TEXT(blue, red, gray));
b->setText(QString("[%1]").arg(tr("menu"));
}
b->setMenu(menu_to_popup);
connect(b, SIGNAL(clicked()), b, SLOT(showMenu()));
- 1. PyQt e menu di scelta rapida
- 2. Il menu di scelta rapida sull'elemento figlio nidificato mostra anche il menu di scelta rapida
- 3. ActionBarSherlock menu di scelta rapida colore del menu del menu
- 4. menu di scelta rapida di navigazione CSS
- 5. Menu di scelta rapida sotto Winforms
- 6. Menu di scelta rapida ListWall UWP
- 7. Modifica menu di scelta rapida Nautilus originale
- 8. Sottomenu WPF per menu di scelta rapida
- 9. Menu di scelta rapida su Android WebView
- 10. Menu di scelta rapida nell'app Console
- 11. Menu di scelta rapida non selezionabile Intestazione
- 12. Menu di scelta rapida da un ListFragment
- 13. menu di scelta rapida jquery disattiva voci di menu
- 14. QTab menu di scelta rapida del menu contestuale
- 15. Come aggiungere check/Deselezionare QAction nel menu di scelta rapida?
- 16. Voglio implementare i menu di scelta rapida su QTWidgetItems
- 17. Qt - Rimuovi collegamento - Sovraccarico ambiguo di scelta rapida
- 18. menu di scelta padre?
- 19. Assegnare la scelta rapida da tastiera alle voci del menu di scelta rapida in Progettazione report
- 20. rightclick evento in Qt per aprire un menu di scelta rapida
- 21. Aggiunta di un menu di scelta rapida con un elemento
- 22. Posso personalizzare il menu di scelta rapida di AvalonDock?
- 23. Qualche browser supporta il menu di scelta rapida di HTML5?
- 24. Creazione di menu di scelta rapida per Win32 API
- 25. Tasti di scelta rapida globali in un'applicazione Qt multipiattaforma
- 26. Trova nodo selezionato nel menu di scelta rapida
- 27. Aggiunta dello stesso menu di scelta rapida a più attività
- 28. jstree rimuovi elementi predefiniti dal menu di scelta rapida
- 29. Menu di scelta rapida WPF in Caliburn Micro
- 30. Come chiudere l'applicazione WPF dal menu di scelta rapida?
Che cosa vuoi esattamente: un menu a comparsa quando è richiesto il menu contestuale (tasto destro) o un menu a comparsa ogni volta che si fa clic sull'etichetta, non importa se è il pulsante sinistro o destro? –