본문 바로가기
QT and Symbian

QT right-click으로 popup menu 사용하기

by leo21c 2015. 6. 18.

아래 싸이트를 참고하기 바랍니다.

http://www.setnode.com/blog/right-click-context-menus-with-qt/#fnref:viewportclasses

간단하게 설명하면 popup menu를 추가할 위젯에 속성 중 setContextMenuPolicy를 CustomContextMenu로 변경을 합니다.

signal/slot 편집기에서 widget을 선택하고 signal: customContextMenuRequested 을 이용합니다.

이 signal을 받을 slot 함수를 만들어 사용하면 됩니다.

slot 함수에서 QMenu를 만들고 Action을 추가해서 사용합니다.

// myWidget is any QWidget-derived class
myWidget->setContextMenuPolicy(Qt::CustomContextMenu);
connect(myWidget, SIGNAL(customContextMenuRequested(const QPoint&)),
    this, SLOT(ShowContextMenu(const QPoint&)));
void MyClass::ShowContextMenu(const QPoint& pos) // this is a slot
{
    // for most widgets
    QPoint globalPos = myWidget->mapToGlobal(pos);
    // for QAbstractScrollArea and derived classes you would use:
    // QPoint globalPos = myWidget->viewport()->mapToGlobal(pos);

    QMenu myMenu;
    myMenu.addAction("Menu Item 1");
    // ...

    QAction* selectedItem = myMenu.exec(globalPos);
    if (selectedItem)
    {
        // something was chosen, do stuff
    }
    else
    {
        // nothing was chosen
    }
}