0

由于某些原因,我需要在 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

4

0 回答 0