我正在为一个Qt按钮控件编写一个弹出菜单。每当按钮被点击时,一个菜单就会弹出(在按钮下面)。
弹出菜单默认位于下方左侧。
有什么方法可以使弹出菜单弹出在按钮下方的右侧?
没有设置位置功能,所以我想知道是否有一些复杂的方法来做这件事?
下面是一些代码(用于弹出菜单):
QMenu *menuMode = new QMenu(this);
min = menu ->addAction("In");
mout = menu ->addAction("out");
ui->pushButtonMode->setMenu(menuMode); //I am writing in MainWindow, that's there is ui
3条答案
按热度按时间a0zr77ik1#
这可以通过将QMenu子类化并将弹出菜单移动到
showEvent
中您想要的位置来完成:弹出菜单.h
弹出菜单.cpp
主窗口.cpp
它看起来像这样:
wswtfjt72#
另一种(恕我直言)更简单的方法是:
qvsjd97n3#
你应该为你的
QMenu
实现一个eventFilter
,在eventFilter
方法中,你需要计算菜单显示的位置。这里有一个例子:
.赞成
主.cpp
对话框.h
对话框.cpp