Qt Context Menu

PoziomeQ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 133
0

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

Kopiuj
connect(ui->tableView,SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(table_context_menu(QPoint)));
Kopiuj
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

n0name_l
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2412
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.

MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
1

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

Kopiuj
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.