아래 싸이트를 참고하기 바랍니다.
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 } }
'QT and Symbian' 카테고리의 다른 글
QTableWidget의 Item은 clear()함수로 메모리 누수 없이 삭제가 된다. (0) | 2015.07.20 |
---|---|
QT release compile error (LNK2038: mismatch detected for ‘_ITERATOR_DEBUG_LEVEL': value ‘2’ doesn’t match value ‘0’) (0) | 2015.07.03 |
Visual Studio에서 QtWinExtras 사용을 위한 세팅방법 (0) | 2015.06.17 |
C++ Qt 06 - layouts, tabs and buddies (0) | 2015.05.29 |
QFileSystemModel을 이용해서 Directory만 QTreeView에 표시하는 방법 (0) | 2015.05.28 |