请问QT中如何实现右击菜单。

请问QT中如何实现右击菜单。

我想在QT做的播放窗口中,右键单击,弹出一个菜单,应该怎么实现呢?谢谢。



QMenu* contextMenu = new QMenu(this);


contextMenu->addAction(tr("**"), parent(), SLOT(**()));
contextMenu->addSeparator();

contextMenu->addAction(tr("***"), parent(), SLOT(***()));

contextMenu->exec(QCursor::pos());
delete contextMenu;

那怎么判断是在播放窗口呢,还是在其他位置上,右击菜单呢?怎么判断是在播放窗口还是在其他位置上?谢谢。


xxxWidget->setContextMenuPolicy (Qt::CustomContextMenu);
connect(xxxWidget,SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(xxx(QPoint));

楼上的,这样,我试了一下,好像不行的啊。在SLOT(xxx(QPoint)的callback函数里,应该做些什么工作?

在Slot里把我二楼回复的内容放进去


引用 5 楼 vickylh 的回复:

在Slot里把我二楼回复的内容放进去


这样做,不行的。我的代码:
QWidget * m_pVideoWindow = new QWidget(this);
  m_pVideoWindow->setStyleSheet("background-color:rgb(0, 0, 0);");
  m_pVideoWindow->setMinimumSize(352, 288);
  m_pVideoWindow->setContextMenuPolicy(Qt::CustomContextMenu);
  connect(m_pVideoWindow, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(contextMenu(QPoint)));

void MainWindow::contextMenu(QPoint * point)
{
  QMenu* contextMenu = new QMenu(this);

  contextMenu->addAction(tr("Play/Pause"), parent(), SLOT(playorpause_callback()));
  contextMenu->addSeparator();

  contextMenu->addAction(tr("Stop"), parent(), SLOT(stop_callback()));

  contextMenu->exec(QCursor::pos());
  delete contextMenu;
}


这个我有实现过...

当时我是在播放面板(也就是显示视频的那个)上重载了contextMenuEvent(QContextMenuEvent *event)函数

如果其他地方的右键菜单不一样的话,你可以重载相应部分的contextMenuEvent(QContextMenuEvent *event)函数

右键菜单的创建方法上面有说了,我以前也有写了一个样例:
http://blog.csdn.net/killua_hzl/archive/2010/02/04/5288782.aspx

写得很搓别BS哈


已经好了,修改一下两行:
connect(m_pVideoWindow, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(contextMenu(const QPoint &)));

void MainWindow::contextMenu(const QPoint &point)

就可以解决了。


http://topic.csdn.net/u/20100520/14/4c09edb6-a109-4134-8388-5f4c9402657f.html

你可能感兴趣的:(工作,delete,qt,callback,Signal,2010)