Qt Context Menu

PoziomeQ
  • Rejestracja:prawie 14 lat
  • Ostatnio:ponad 8 lat
  • 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

edytowany 3x, ostatnio: PoziomeQ
n0name_l
  • Rejestracja:ponad 12 lat
  • Ostatnio:prawie 5 lat
  • 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.

edytowany 1x, ostatnio: n0name_l
MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:mniej niż minuta
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.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 1x, ostatnio: MarekR22

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.