对于从QGraphicsItem上的mouseReleaseEvent或QContextMenu触发的每个QDialog I pop都会发生这种情况。我不知道问题是什么 - 代码非常简单..
...
void MyQGfxItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
if(event->button() == Qt::RightButton)
{
MyDialog someDlg;
if(someDlg.exec())
{
}
}
}
...
关闭对话框后,无论是通过“确定”还是“取消”,都会出现触发事件的空上下文菜单:
如果我的QDockWidget隐藏或可见,空白项似乎可以控制..任何想法是怎么回事?许多谷歌搜索让我陷入困境。
编辑 - 看起来只有在使用鼠标右键时才会出现这种情况。
答案 0 :(得分:2)
根据QEvent的文档,您应该接受()您不希望传播到父窗口小部件的事件。所以在mouseReleaseEvent的某处,你应该添加
event->setAccepted(true);
或
event->accept();
请注意,您可能还需要将此代码放在mousePressEvent中。
答案 1 :(得分:0)
哈!得到它了。看起来QMainWindow在完成所有操作后抓取右键单击事件。在QMainWindow中调用this-> setContextMenuPolicy(Qt :: NoContextMenu)会抑制它。