强制QMenu关闭

时间:2015-08-31 12:33:23

标签: c++ qt qdialog qmenu qaction

由于某些原因,我需要在QToolBar中实现特定菜单。我的目标是使用下拉菜单(图标+三角形)保存按钮的默认设计,但是当我按下此三角形时,我想显示我自己的QDialog(它看起来像一棵树)。
所以,现在我有这样的事情:

class CustomMenu : public QMenu
{
  Q_OBJECT;

public:

  CustomMenu(QWidget *parent);

signals:
  void showMyMenu();
};

这是我创建此菜单并将其与所需插槽连接的方式:

CustomMenu *menu = new CustomMenu(tb);         
connect(menu, SIGNAL(aboutToShow()), menu, SIGNAL(showMyMenu()));
connect(menu, SIGNAL(showMyMenu()), this, SLOT(execMyMenu()));       
tbButton->setMenu(menu);
tb->addAction(tbButton);

这是插槽:

void MyProjectClass::execMyMenu()
{

  CustomMenu *cm = (CustomMenu*)sender();

  CustomMenuWidget* myMenu = new CustomMenuWidget();        
  myMenu->exec();

  cm->hide();

  delete myMenu;
}

这里的问题是,为hide()调用CustomMenu并不会使三角形变为未按下,并且仍然会关注按钮。这使得无法点击其他内容,直到您没有从该按钮摆脱焦点。
我想要的一切就是用我自定义的下拉菜单替换默认下拉菜单。
这似乎很容易,但我可能错过了一些东西。我究竟做错了什么?
我使用 Qt 4.8.6

0 个答案:

没有答案