2009-04-12 2 views
7

У меня есть QTableView в главном интерфейсе моей программы. Я хотел бы показать всплывающее меню, когда пользователь щелкнет правой кнопкой мыши на ячейках таблицы и предпримет соответствующие действия, когда в меню выбрана опция.Создание всплывающего меню в Qt для QTableView

Я использую Qt Creator 1 (Qt version 4.5). Как я могу это сделать?

ответ

22

Проверьте сигнал customContextMenuRequested, чтобы получить мероприятие, и используйте QMenu для самого меню. Используйте QTableView::indexAt, чтобы узнать, какая, если таковая имеется, была нажата ячейка на основе координат, данных для сигнала, и предпринять соответствующие действия при щелчке по элементу меню.

+2

Вам нужно будет вызвать menu.exec (const QPoint &), чтобы отобразить его. Убедитесь, что вы перевели его в соответствующие координаты: menu.exec (mapToGlobal (point), 0) –

+5

Или просто используйте menu.exec (QCursor :: pos()) http://doc.trolltech.com/latest/ qmenu.html # exec – amree

+0

Контекстное меню может вызываться из сочетания клавиш, поэтому позиция курсора не всегда является правильной точкой вызова. –

 Смежные вопросы

  • Нет связанных вопросов^_^