Qt Context Menu

0

Cześć.
Mam pewien problem ze zrobieniem własnego context menu w Qt5

connect(ui->tableView,SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(table_context_menu(QPoint)));
void tv::table_context_menu(const QPoint& pos)
{
    QPoint globalPos = ui->tableView->mapToGlobal(pos);

    QMenu menu;
    menu.addAction("Informacje");
    menu.addAction("Ilość");

    QAction* selectedItem = menu.exec(globalPos);

    if(selectedItem)
    {
        qDebug() << "somethink";
    }
    else
    {
        qDebug() << "somethink 2";
    }


}

nie jestem pewien jak mam tym ifie porównywać dane parametry, tak aby po wybraniu odpowiedniego wykonała się odpowiednia akcja.
z góry dzięki za pomoc :)

PS. Oczywiście chodzi o menu po kliknięciu prawego przycisku myszy

1

Pierwsze co mi przychodzi do glowy to przed dodaniem akcji do menu, lacz je z jakims slotem.
AFAIR mozesz tez po tytule sprawdzac, ale to brzydkie bedzie.

1

Trzeba czytać dokumentację! To powinno wyglądać tak:

void tv::table_context_menu(const QPoint& pos)
{
    QPoint globalPos = ui->tableView->mapToGlobal(pos);
 
    QMenu menu;
    menu.addAction("Informacje", this, SLOT(jakisSlotNaAkcjeInformacje()));
    menu.addAction("Ilość", this, SLOT(jakisSlotNaAkcjeIlosc()));
    QAction *action = menu.exec(globalPos);
    if (action)
         qDebug() << "Wybrano: " << action->text();
}

Jeszcze lepiej to stworzyć akcję QAction dla każdej interakcji użytkownika (gdzie w grę wchodzą menus i buttons) i to podpinać pod menu i button'y. Zaleta jest taka, że zmieniając stan takiej akcji automatycznie zmieni ci się stan wszystkich elementów graficznych, do których jest podpięta ta akcja.

1 użytkowników online, w tym zalogowanych: 0, gości: 1